Lines Matching refs:p
64 static void __unhash_process(struct task_struct *p, bool group_dead) in __unhash_process() argument
67 detach_pid(p, PIDTYPE_PID); in __unhash_process()
69 detach_pid(p, PIDTYPE_PGID); in __unhash_process()
70 detach_pid(p, PIDTYPE_SID); in __unhash_process()
72 list_del_rcu(&p->tasks); in __unhash_process()
73 list_del_init(&p->sibling); in __unhash_process()
76 list_del_rcu(&p->thread_group); in __unhash_process()
77 list_del_rcu(&p->thread_node); in __unhash_process()
169 void release_task(struct task_struct *p) in release_task() argument
177 atomic_dec(&__task_cred(p)->user->processes); in release_task()
180 proc_flush_task(p); in release_task()
183 ptrace_release_task(p); in release_task()
184 __exit_signal(p); in release_task()
192 leader = p->group_leader; in release_task()
193 if (leader != p && thread_group_empty(leader) in release_task()
206 release_thread(p); in release_task()
207 call_rcu(&p->rcu, delayed_put_task_struct); in release_task()
209 p = leader; in release_task()
225 struct task_struct *p; in will_become_orphaned_pgrp() local
227 do_each_pid_task(pgrp, PIDTYPE_PGID, p) { in will_become_orphaned_pgrp()
228 if ((p == ignored_task) || in will_become_orphaned_pgrp()
229 (p->exit_state && thread_group_empty(p)) || in will_become_orphaned_pgrp()
230 is_global_init(p->real_parent)) in will_become_orphaned_pgrp()
233 if (task_pgrp(p->real_parent) != pgrp && in will_become_orphaned_pgrp()
234 task_session(p->real_parent) == task_session(p)) in will_become_orphaned_pgrp()
236 } while_each_pid_task(pgrp, PIDTYPE_PGID, p); in will_become_orphaned_pgrp()
254 struct task_struct *p; in has_stopped_jobs() local
256 do_each_pid_task(pgrp, PIDTYPE_PGID, p) { in has_stopped_jobs()
257 if (p->signal->flags & SIGNAL_STOP_STOPPED) in has_stopped_jobs()
259 } while_each_pid_task(pgrp, PIDTYPE_PGID, p); in has_stopped_jobs()
301 struct task_struct *c, *g, *p = current; in mm_update_next_owner() local
308 if (mm->owner != p) in mm_update_next_owner()
324 list_for_each_entry(c, &p->children, sibling) { in mm_update_next_owner()
332 list_for_each_entry(c, &p->real_parent->children, sibling) { in mm_update_next_owner()
360 BUG_ON(c == p); in mm_update_next_owner()
442 static struct task_struct *find_alive_thread(struct task_struct *p) in find_alive_thread() argument
446 for_each_thread(p, t) { in find_alive_thread()
522 static void reparent_leader(struct task_struct *father, struct task_struct *p, in reparent_leader() argument
525 if (unlikely(p->exit_state == EXIT_DEAD)) in reparent_leader()
529 p->exit_signal = SIGCHLD; in reparent_leader()
532 if (!p->ptrace && in reparent_leader()
533 p->exit_state == EXIT_ZOMBIE && thread_group_empty(p)) { in reparent_leader()
534 if (do_notify_parent(p, p->exit_signal)) { in reparent_leader()
535 p->exit_state = EXIT_DEAD; in reparent_leader()
536 list_add(&p->ptrace_entry, dead); in reparent_leader()
540 kill_orphaned_pgrp(p, father); in reparent_leader()
554 struct task_struct *p, *t, *reaper; in forget_original_parent() local
565 list_for_each_entry(p, &father->children, sibling) { in forget_original_parent()
566 for_each_thread(p, t) { in forget_original_parent()
580 reparent_leader(father, p, dead); in forget_original_parent()
592 struct task_struct *p, *n; in exit_notify() local
623 list_for_each_entry_safe(p, n, &dead, ptrace_entry) { in exit_notify()
624 list_del_init(&p->ptrace_entry); in exit_notify()
625 release_task(p); in exit_notify()
911 static int eligible_pid(struct wait_opts *wo, struct task_struct *p) in eligible_pid() argument
914 task_pid_type(p, wo->wo_type) == wo->wo_pid; in eligible_pid()
918 eligible_child(struct wait_opts *wo, bool ptrace, struct task_struct *p) in eligible_child() argument
920 if (!eligible_pid(wo, p)) in eligible_child()
938 if ((p->exit_signal != SIGCHLD) ^ !!(wo->wo_flags & __WCLONE)) in eligible_child()
944 static int wait_noreap_copyout(struct wait_opts *wo, struct task_struct *p, in wait_noreap_copyout() argument
949 ? getrusage(p, RUSAGE_BOTH, wo->wo_rusage) : 0; in wait_noreap_copyout()
951 put_task_struct(p); in wait_noreap_copyout()
978 static int wait_task_zombie(struct wait_opts *wo, struct task_struct *p) in wait_task_zombie() argument
981 pid_t pid = task_pid_vnr(p); in wait_task_zombie()
982 uid_t uid = from_kuid_munged(current_user_ns(), task_uid(p)); in wait_task_zombie()
989 int exit_code = p->exit_code; in wait_task_zombie()
992 get_task_struct(p); in wait_task_zombie()
1003 return wait_noreap_copyout(wo, p, pid, uid, why, status); in wait_task_zombie()
1008 state = (ptrace_reparented(p) && thread_group_leader(p)) ? in wait_task_zombie()
1010 if (cmpxchg(&p->exit_state, EXIT_ZOMBIE, state) != EXIT_ZOMBIE) in wait_task_zombie()
1021 if (state == EXIT_DEAD && thread_group_leader(p)) { in wait_task_zombie()
1022 struct signal_struct *sig = p->signal; in wait_task_zombie()
1047 thread_group_cputime_adjusted(p, &tgutime, &tgstime); in wait_task_zombie()
1052 psig->cgtime += task_gtime(p) + sig->gtime + sig->cgtime; in wait_task_zombie()
1054 p->min_flt + sig->min_flt + sig->cmin_flt; in wait_task_zombie()
1056 p->maj_flt + sig->maj_flt + sig->cmaj_flt; in wait_task_zombie()
1058 p->nvcsw + sig->nvcsw + sig->cnvcsw; in wait_task_zombie()
1060 p->nivcsw + sig->nivcsw + sig->cnivcsw; in wait_task_zombie()
1062 task_io_get_inblock(p) + in wait_task_zombie()
1065 task_io_get_oublock(p) + in wait_task_zombie()
1070 task_io_accounting_add(&psig->ioac, &p->ioac); in wait_task_zombie()
1077 ? getrusage(p, RUSAGE_BOTH, wo->wo_rusage) : 0; in wait_task_zombie()
1078 status = (p->signal->flags & SIGNAL_GROUP_EXIT) in wait_task_zombie()
1079 ? p->signal->group_exit_code : p->exit_code; in wait_task_zombie()
1112 ptrace_unlink(p); in wait_task_zombie()
1116 if (do_notify_parent(p, p->exit_signal)) in wait_task_zombie()
1118 p->exit_state = state; in wait_task_zombie()
1122 release_task(p); in wait_task_zombie()
1127 static int *task_stopped_code(struct task_struct *p, bool ptrace) in task_stopped_code() argument
1130 if (task_is_stopped_or_traced(p) && in task_stopped_code()
1131 !(p->jobctl & JOBCTL_LISTENING)) in task_stopped_code()
1132 return &p->exit_code; in task_stopped_code()
1134 if (p->signal->flags & SIGNAL_STOP_STOPPED) in task_stopped_code()
1135 return &p->signal->group_exit_code; in task_stopped_code()
1159 int ptrace, struct task_struct *p) in wait_task_stopped() argument
1172 if (!task_stopped_code(p, ptrace)) in wait_task_stopped()
1176 spin_lock_irq(&p->sighand->siglock); in wait_task_stopped()
1178 p_code = task_stopped_code(p, ptrace); in wait_task_stopped()
1189 uid = from_kuid_munged(current_user_ns(), task_uid(p)); in wait_task_stopped()
1191 spin_unlock_irq(&p->sighand->siglock); in wait_task_stopped()
1202 get_task_struct(p); in wait_task_stopped()
1203 pid = task_pid_vnr(p); in wait_task_stopped()
1209 return wait_noreap_copyout(wo, p, pid, uid, why, exit_code); in wait_task_stopped()
1212 ? getrusage(p, RUSAGE_BOTH, wo->wo_rusage) : 0; in wait_task_stopped()
1231 put_task_struct(p); in wait_task_stopped()
1243 static int wait_task_continued(struct wait_opts *wo, struct task_struct *p) in wait_task_continued() argument
1252 if (!(p->signal->flags & SIGNAL_STOP_CONTINUED)) in wait_task_continued()
1255 spin_lock_irq(&p->sighand->siglock); in wait_task_continued()
1257 if (!(p->signal->flags & SIGNAL_STOP_CONTINUED)) { in wait_task_continued()
1258 spin_unlock_irq(&p->sighand->siglock); in wait_task_continued()
1262 p->signal->flags &= ~SIGNAL_STOP_CONTINUED; in wait_task_continued()
1263 uid = from_kuid_munged(current_user_ns(), task_uid(p)); in wait_task_continued()
1264 spin_unlock_irq(&p->sighand->siglock); in wait_task_continued()
1266 pid = task_pid_vnr(p); in wait_task_continued()
1267 get_task_struct(p); in wait_task_continued()
1273 ? getrusage(p, RUSAGE_BOTH, wo->wo_rusage) : 0; in wait_task_continued()
1274 put_task_struct(p); in wait_task_continued()
1280 retval = wait_noreap_copyout(wo, p, pid, uid, in wait_task_continued()
1298 struct task_struct *p) in wait_consider_task() argument
1305 int exit_state = ACCESS_ONCE(p->exit_state); in wait_consider_task()
1311 ret = eligible_child(wo, ptrace, p); in wait_consider_task()
1315 ret = security_task_wait(p); in wait_consider_task()
1339 if (likely(!ptrace) && unlikely(p->ptrace)) { in wait_consider_task()
1351 if (!ptrace_reparented(p)) in wait_consider_task()
1358 if (!delay_group_leader(p)) { in wait_consider_task()
1364 if (unlikely(ptrace) || likely(!p->ptrace)) in wait_consider_task()
1365 return wait_task_zombie(wo, p); in wait_consider_task()
1402 ret = wait_task_stopped(wo, ptrace, p); in wait_consider_task()
1411 return wait_task_continued(wo, p); in wait_consider_task()
1425 struct task_struct *p; in do_wait_thread() local
1427 list_for_each_entry(p, &tsk->children, sibling) { in do_wait_thread()
1428 int ret = wait_consider_task(wo, 0, p); in do_wait_thread()
1439 struct task_struct *p; in ptrace_do_wait() local
1441 list_for_each_entry(p, &tsk->ptraced, ptrace_entry) { in ptrace_do_wait()
1442 int ret = wait_consider_task(wo, 1, p); in ptrace_do_wait()
1456 struct task_struct *p = key; in child_wait_callback() local
1458 if (!eligible_pid(wo, p)) in child_wait_callback()
1461 if ((wo->wo_flags & __WNOTHREAD) && wait->private != p->parent) in child_wait_callback()
1467 void __wake_up_parent(struct task_struct *p, struct task_struct *parent) in __wake_up_parent() argument
1470 TASK_INTERRUPTIBLE, 1, p); in __wake_up_parent()