Lines Matching refs:p

134 static void __unhash_process(struct release_task_post *post, struct task_struct *p,  in __unhash_process()  argument
137 struct pid *pid = task_pid(p); in __unhash_process()
141 detach_pid(post->pids, p, PIDTYPE_PID); in __unhash_process()
145 detach_pid(post->pids, p, PIDTYPE_TGID); in __unhash_process()
146 detach_pid(post->pids, p, PIDTYPE_PGID); in __unhash_process()
147 detach_pid(post->pids, p, PIDTYPE_SID); in __unhash_process()
149 list_del_rcu(&p->tasks); in __unhash_process()
150 list_del_init(&p->sibling); in __unhash_process()
153 list_del_rcu(&p->thread_node); in __unhash_process()
244 void release_task(struct task_struct *p) in release_task() argument
256 dec_rlimit_ucounts(task_ucounts(p), UCOUNT_RLIMIT_NPROC, 1); in release_task()
259 pidfs_exit(p); in release_task()
260 cgroup_release(p); in release_task()
263 thread_pid = task_pid(p); in release_task()
266 ptrace_release_task(p); in release_task()
267 __exit_signal(&post, p); in release_task()
275 leader = p->group_leader; in release_task()
276 if (leader != p && thread_group_empty(leader) in release_task()
294 add_device_randomness(&p->se.sum_exec_runtime, in release_task()
295 sizeof(p->se.sum_exec_runtime)); in release_task()
297 release_thread(p); in release_task()
304 flush_sigqueue(&p->pending); in release_task()
305 if (thread_group_leader(p)) in release_task()
306 flush_sigqueue(&p->signal->shared_pending); in release_task()
308 put_task_struct_rcu_user(p); in release_task()
310 p = leader; in release_task()
355 struct task_struct *p; in will_become_orphaned_pgrp() local
357 do_each_pid_task(pgrp, PIDTYPE_PGID, p) { in will_become_orphaned_pgrp()
358 if ((p == ignored_task) || in will_become_orphaned_pgrp()
359 (p->exit_state && thread_group_empty(p)) || in will_become_orphaned_pgrp()
360 is_global_init(p->real_parent)) in will_become_orphaned_pgrp()
363 if (task_pgrp(p->real_parent) != pgrp && in will_become_orphaned_pgrp()
364 task_session(p->real_parent) == task_session(p)) in will_become_orphaned_pgrp()
366 } while_each_pid_task(pgrp, PIDTYPE_PGID, p); in will_become_orphaned_pgrp()
384 struct task_struct *p; in has_stopped_jobs() local
386 do_each_pid_task(pgrp, PIDTYPE_PGID, p) { in has_stopped_jobs()
387 if (p->signal->flags & SIGNAL_STOP_STOPPED) in has_stopped_jobs()
389 } while_each_pid_task(pgrp, PIDTYPE_PGID, p); in has_stopped_jobs()
490 struct task_struct *g, *p = current; in mm_update_next_owner() local
496 if (mm->owner != p) in mm_update_next_owner()
512 list_for_each_entry(g, &p->children, sibling) { in mm_update_next_owner()
519 list_for_each_entry(g, &p->real_parent->children, sibling) { in mm_update_next_owner()
587 static struct task_struct *find_alive_thread(struct task_struct *p) in find_alive_thread() argument
591 for_each_thread(p, t) { in find_alive_thread()
605 struct task_struct *p, *n; in find_child_reaper() local
618 list_for_each_entry_safe(p, n, dead, ptrace_entry) { in find_child_reaper()
619 list_del_init(&p->ptrace_entry); in find_child_reaper()
620 release_task(p); in find_child_reaper()
674 static void reparent_leader(struct task_struct *father, struct task_struct *p, in reparent_leader() argument
677 if (unlikely(p->exit_state == EXIT_DEAD)) in reparent_leader()
681 p->exit_signal = SIGCHLD; in reparent_leader()
684 if (!p->ptrace && in reparent_leader()
685 p->exit_state == EXIT_ZOMBIE && thread_group_empty(p)) { in reparent_leader()
686 if (do_notify_parent(p, p->exit_signal)) { in reparent_leader()
687 p->exit_state = EXIT_DEAD; in reparent_leader()
688 list_add(&p->ptrace_entry, dead); in reparent_leader()
692 kill_orphaned_pgrp(p, father); in reparent_leader()
701 struct task_struct *p, *t, *reaper; in forget_original_parent() local
712 list_for_each_entry(p, &father->children, sibling) { in forget_original_parent()
713 for_each_thread(p, t) { in forget_original_parent()
728 reparent_leader(father, p, dead); in forget_original_parent()
740 struct task_struct *p, *n; in exit_notify() local
776 list_for_each_entry_safe(p, n, &dead, ptrace_entry) { in exit_notify()
777 list_del_init(&p->ptrace_entry); in exit_notify()
778 release_task(p); in exit_notify()
783 unsigned long stack_not_used(struct task_struct *p) in stack_not_used() argument
785 unsigned long *n = end_of_stack(p); in stack_not_used()
796 return (unsigned long)end_of_stack(p) - (unsigned long)n; in stack_not_used()
798 return (unsigned long)n - (unsigned long)end_of_stack(p); in stack_not_used()
1118 static int eligible_pid(struct wait_opts *wo, struct task_struct *p) in eligible_pid() argument
1121 task_pid_type(p, wo->wo_type) == wo->wo_pid; in eligible_pid()
1125 eligible_child(struct wait_opts *wo, bool ptrace, struct task_struct *p) in eligible_child() argument
1127 if (!eligible_pid(wo, p)) in eligible_child()
1145 if ((p->exit_signal != SIGCHLD) ^ !!(wo->wo_flags & __WCLONE)) in eligible_child()
1157 static int wait_task_zombie(struct wait_opts *wo, struct task_struct *p) in wait_task_zombie() argument
1160 pid_t pid = task_pid_vnr(p); in wait_task_zombie()
1161 uid_t uid = from_kuid_munged(current_user_ns(), task_uid(p)); in wait_task_zombie()
1168 status = (p->signal->flags & SIGNAL_GROUP_EXIT) in wait_task_zombie()
1169 ? p->signal->group_exit_code : p->exit_code; in wait_task_zombie()
1170 get_task_struct(p); in wait_task_zombie()
1174 getrusage(p, RUSAGE_BOTH, wo->wo_rusage); in wait_task_zombie()
1175 put_task_struct(p); in wait_task_zombie()
1181 state = (ptrace_reparented(p) && thread_group_leader(p)) ? in wait_task_zombie()
1183 if (cmpxchg(&p->exit_state, EXIT_ZOMBIE, state) != EXIT_ZOMBIE) in wait_task_zombie()
1194 if (state == EXIT_DEAD && thread_group_leader(p)) { in wait_task_zombie()
1195 struct signal_struct *sig = p->signal; in wait_task_zombie()
1218 thread_group_cputime_adjusted(p, &tgutime, &tgstime); in wait_task_zombie()
1222 psig->cgtime += task_gtime(p) + sig->gtime + sig->cgtime; in wait_task_zombie()
1224 p->min_flt + sig->min_flt + sig->cmin_flt; in wait_task_zombie()
1226 p->maj_flt + sig->maj_flt + sig->cmaj_flt; in wait_task_zombie()
1228 p->nvcsw + sig->nvcsw + sig->cnvcsw; in wait_task_zombie()
1230 p->nivcsw + sig->nivcsw + sig->cnivcsw; in wait_task_zombie()
1232 task_io_get_inblock(p) + in wait_task_zombie()
1235 task_io_get_oublock(p) + in wait_task_zombie()
1240 task_io_accounting_add(&psig->ioac, &p->ioac); in wait_task_zombie()
1246 getrusage(p, RUSAGE_BOTH, wo->wo_rusage); in wait_task_zombie()
1247 status = (p->signal->flags & SIGNAL_GROUP_EXIT) in wait_task_zombie()
1248 ? p->signal->group_exit_code : p->exit_code; in wait_task_zombie()
1254 ptrace_unlink(p); in wait_task_zombie()
1258 if (do_notify_parent(p, p->exit_signal)) in wait_task_zombie()
1260 p->exit_state = state; in wait_task_zombie()
1264 release_task(p); in wait_task_zombie()
1283 static int *task_stopped_code(struct task_struct *p, bool ptrace) in task_stopped_code() argument
1286 if (task_is_traced(p) && !(p->jobctl & JOBCTL_LISTENING)) in task_stopped_code()
1287 return &p->exit_code; in task_stopped_code()
1289 if (p->signal->flags & SIGNAL_STOP_STOPPED) in task_stopped_code()
1290 return &p->signal->group_exit_code; in task_stopped_code()
1314 int ptrace, struct task_struct *p) in wait_task_stopped() argument
1327 if (!task_stopped_code(p, ptrace)) in wait_task_stopped()
1331 spin_lock_irq(&p->sighand->siglock); in wait_task_stopped()
1333 p_code = task_stopped_code(p, ptrace); in wait_task_stopped()
1344 uid = from_kuid_munged(current_user_ns(), task_uid(p)); in wait_task_stopped()
1346 spin_unlock_irq(&p->sighand->siglock); in wait_task_stopped()
1357 get_task_struct(p); in wait_task_stopped()
1358 pid = task_pid_vnr(p); in wait_task_stopped()
1363 getrusage(p, RUSAGE_BOTH, wo->wo_rusage); in wait_task_stopped()
1364 put_task_struct(p); in wait_task_stopped()
1385 static int wait_task_continued(struct wait_opts *wo, struct task_struct *p) in wait_task_continued() argument
1394 if (!(p->signal->flags & SIGNAL_STOP_CONTINUED)) in wait_task_continued()
1397 spin_lock_irq(&p->sighand->siglock); in wait_task_continued()
1399 if (!(p->signal->flags & SIGNAL_STOP_CONTINUED)) { in wait_task_continued()
1400 spin_unlock_irq(&p->sighand->siglock); in wait_task_continued()
1404 p->signal->flags &= ~SIGNAL_STOP_CONTINUED; in wait_task_continued()
1405 uid = from_kuid_munged(current_user_ns(), task_uid(p)); in wait_task_continued()
1406 spin_unlock_irq(&p->sighand->siglock); in wait_task_continued()
1408 pid = task_pid_vnr(p); in wait_task_continued()
1409 get_task_struct(p); in wait_task_continued()
1413 getrusage(p, RUSAGE_BOTH, wo->wo_rusage); in wait_task_continued()
1414 put_task_struct(p); in wait_task_continued()
1438 struct task_struct *p) in wait_consider_task() argument
1445 int exit_state = READ_ONCE(p->exit_state); in wait_consider_task()
1451 ret = eligible_child(wo, ptrace, p); in wait_consider_task()
1465 if (likely(!ptrace) && unlikely(p->ptrace)) { in wait_consider_task()
1477 if (!ptrace_reparented(p)) in wait_consider_task()
1484 if (!delay_group_leader(p)) { in wait_consider_task()
1490 if (unlikely(ptrace) || likely(!p->ptrace)) in wait_consider_task()
1491 return wait_task_zombie(wo, p); in wait_consider_task()
1528 ret = wait_task_stopped(wo, ptrace, p); in wait_consider_task()
1537 return wait_task_continued(wo, p); in wait_consider_task()
1551 struct task_struct *p; in do_wait_thread() local
1553 list_for_each_entry(p, &tsk->children, sibling) { in do_wait_thread()
1554 int ret = wait_consider_task(wo, 0, p); in do_wait_thread()
1565 struct task_struct *p; in ptrace_do_wait() local
1567 list_for_each_entry(p, &tsk->ptraced, ptrace_entry) { in ptrace_do_wait()
1568 int ret = wait_consider_task(wo, 1, p); in ptrace_do_wait()
1577 bool pid_child_should_wake(struct wait_opts *wo, struct task_struct *p) in pid_child_should_wake() argument
1579 if (!eligible_pid(wo, p)) in pid_child_should_wake()
1582 if ((wo->wo_flags & __WNOTHREAD) && wo->child_wait.private != p->parent) in pid_child_should_wake()
1593 struct task_struct *p = key; in child_wait_callback() local
1595 if (pid_child_should_wake(wo, p)) in child_wait_callback()
1601 void __wake_up_parent(struct task_struct *p, struct task_struct *parent) in __wake_up_parent() argument
1604 TASK_INTERRUPTIBLE, p); in __wake_up_parent()