Lines Matching refs:father

501 static struct task_struct *find_child_reaper(struct task_struct *father,  in find_child_reaper()  argument
506 struct pid_namespace *pid_ns = task_active_pid_ns(father); in find_child_reaper()
510 if (likely(reaper != father)) in find_child_reaper()
513 reaper = find_alive_thread(father); in find_child_reaper()
522 father->signal->group_exit_code ?: father->exit_code); in find_child_reaper()
533 return father; in find_child_reaper()
543 static struct task_struct *find_new_reaper(struct task_struct *father, in find_new_reaper() argument
548 thread = find_alive_thread(father); in find_new_reaper()
552 if (father->signal->has_child_subreaper) { in find_new_reaper()
553 unsigned int ns_level = task_pid(father)->level; in find_new_reaper()
562 for (reaper = father->real_parent; in find_new_reaper()
581 static void reparent_leader(struct task_struct *father, struct task_struct *p, in reparent_leader() argument
599 kill_orphaned_pgrp(p, father); in reparent_leader()
610 static void forget_original_parent(struct task_struct *father, in forget_original_parent() argument
615 if (unlikely(!list_empty(&father->ptraced))) in forget_original_parent()
616 exit_ptrace(father, dead); in forget_original_parent()
619 reaper = find_child_reaper(father, dead); in forget_original_parent()
620 if (list_empty(&father->children)) in forget_original_parent()
623 reaper = find_new_reaper(father, reaper); in forget_original_parent()
624 list_for_each_entry(p, &father->children, sibling) { in forget_original_parent()
627 BUG_ON((!t->ptrace) != (t->parent == father)); in forget_original_parent()
639 if (!same_thread_group(reaper, father)) in forget_original_parent()
640 reparent_leader(father, p, dead); in forget_original_parent()
642 list_splice_tail_init(&father->children, &reaper->children); in forget_original_parent()