Lines Matching refs:tsk
92 static void __exit_signal(struct task_struct *tsk) in __exit_signal() argument
94 struct signal_struct *sig = tsk->signal; in __exit_signal()
95 bool group_dead = thread_group_leader(tsk); in __exit_signal()
100 sighand = rcu_dereference_check(tsk->sighand, in __exit_signal()
105 posix_cpu_timers_exit(tsk); in __exit_signal()
107 posix_cpu_timers_exit_group(tsk); in __exit_signal()
114 if (unlikely(has_group_leader_pid(tsk))) in __exit_signal()
115 posix_cpu_timers_exit_group(tsk); in __exit_signal()
130 if (tsk == sig->curr_target) in __exit_signal()
131 sig->curr_target = next_thread(tsk); in __exit_signal()
134 add_device_randomness((const void*) &tsk->se.sum_exec_runtime, in __exit_signal()
143 task_cputime(tsk, &utime, &stime); in __exit_signal()
147 sig->gtime += task_gtime(tsk); in __exit_signal()
148 sig->min_flt += tsk->min_flt; in __exit_signal()
149 sig->maj_flt += tsk->maj_flt; in __exit_signal()
150 sig->nvcsw += tsk->nvcsw; in __exit_signal()
151 sig->nivcsw += tsk->nivcsw; in __exit_signal()
152 sig->inblock += task_io_get_inblock(tsk); in __exit_signal()
153 sig->oublock += task_io_get_oublock(tsk); in __exit_signal()
154 task_io_accounting_add(&sig->ioac, &tsk->ioac); in __exit_signal()
155 sig->sum_sched_runtime += tsk->se.sum_exec_runtime; in __exit_signal()
157 __unhash_process(tsk, group_dead); in __exit_signal()
164 flush_sigqueue(&tsk->pending); in __exit_signal()
165 tsk->sighand = NULL; in __exit_signal()
169 clear_tsk_thread_flag(tsk, TIF_SIGPENDING); in __exit_signal()
178 struct task_struct *tsk = container_of(rhp, struct task_struct, rcu); in delayed_put_task_struct() local
180 perf_event_delayed_put(tsk); in delayed_put_task_struct()
181 trace_sched_process_free(tsk); in delayed_put_task_struct()
182 put_task_struct(tsk); in delayed_put_task_struct()
318 kill_orphaned_pgrp(struct task_struct *tsk, struct task_struct *parent) in kill_orphaned_pgrp() argument
320 struct pid *pgrp = task_pgrp(tsk); in kill_orphaned_pgrp()
321 struct task_struct *ignored_task = tsk; in kill_orphaned_pgrp()
327 parent = tsk->real_parent; in kill_orphaned_pgrp()
335 task_session(parent) == task_session(tsk) && in kill_orphaned_pgrp()
649 static void exit_notify(struct task_struct *tsk, int group_dead) in exit_notify() argument
656 forget_original_parent(tsk, &dead); in exit_notify()
659 kill_orphaned_pgrp(tsk->group_leader, NULL); in exit_notify()
661 tsk->exit_state = EXIT_ZOMBIE; in exit_notify()
662 if (unlikely(tsk->ptrace)) { in exit_notify()
663 int sig = thread_group_leader(tsk) && in exit_notify()
664 thread_group_empty(tsk) && in exit_notify()
665 !ptrace_reparented(tsk) ? in exit_notify()
666 tsk->exit_signal : SIGCHLD; in exit_notify()
667 autoreap = do_notify_parent(tsk, sig); in exit_notify()
668 } else if (thread_group_leader(tsk)) { in exit_notify()
669 autoreap = thread_group_empty(tsk) && in exit_notify()
670 do_notify_parent(tsk, tsk->exit_signal); in exit_notify()
676 tsk->exit_state = EXIT_DEAD; in exit_notify()
677 list_add(&tsk->ptrace_entry, &dead); in exit_notify()
681 if (unlikely(tsk->signal->notify_count < 0)) in exit_notify()
682 wake_up_process(tsk->signal->group_exit_task); in exit_notify()
717 struct task_struct *tsk = current; in do_exit() local
720 profile_task_exit(tsk); in do_exit()
721 kcov_task_exit(tsk); in do_exit()
723 WARN_ON(blk_needs_flush_plug(tsk)); in do_exit()
727 if (unlikely(!tsk->pid)) in do_exit()
741 validate_creds_for_do_exit(tsk); in do_exit()
747 if (unlikely(tsk->flags & PF_EXITING)) { in do_exit()
758 tsk->flags |= PF_EXITPIDONE; in do_exit()
763 exit_signals(tsk); /* sets PF_EXITING */ in do_exit()
773 raw_spin_lock_irq(&tsk->pi_lock); in do_exit()
774 raw_spin_unlock_irq(&tsk->pi_lock); in do_exit()
784 if (tsk->mm) in do_exit()
785 sync_mm_rss(tsk->mm); in do_exit()
786 acct_update_integrals(tsk); in do_exit()
787 group_dead = atomic_dec_and_test(&tsk->signal->live); in do_exit()
790 hrtimer_cancel(&tsk->signal->real_timer); in do_exit()
791 exit_itimers(tsk->signal); in do_exit()
793 if (tsk->mm) in do_exit()
794 setmax_mm_hiwater_rss(&tsk->signal->maxrss, tsk->mm); in do_exit()
799 audit_free(tsk); in do_exit()
801 tsk->exit_code = code; in do_exit()
802 taskstats_exit(tsk, group_dead); in do_exit()
808 trace_sched_process_exit(tsk); in do_exit()
810 exit_sem(tsk); in do_exit()
811 exit_shm(tsk); in do_exit()
812 exit_files(tsk); in do_exit()
813 exit_fs(tsk); in do_exit()
816 exit_task_namespaces(tsk); in do_exit()
817 exit_task_work(tsk); in do_exit()
818 exit_thread(tsk); in do_exit()
819 exit_umh(tsk); in do_exit()
827 perf_event_exit_task(tsk); in do_exit()
829 sched_autogroup_exit_task(tsk); in do_exit()
830 cgroup_exit(tsk); in do_exit()
835 flush_ptrace_hw_breakpoint(tsk); in do_exit()
838 exit_notify(tsk, group_dead); in do_exit()
839 proc_exit_connector(tsk); in do_exit()
840 mpol_put_task_policy(tsk); in do_exit()
854 tsk->flags |= PF_EXITPIDONE; in do_exit()
856 if (tsk->io_context) in do_exit()
857 exit_io_context(tsk); in do_exit()
859 if (tsk->splice_pipe) in do_exit()
860 free_pipe_info(tsk->splice_pipe); in do_exit()
862 if (tsk->task_frag.page) in do_exit()
863 put_page(tsk->task_frag.page); in do_exit()
865 validate_creds_for_do_exit(tsk); in do_exit()
869 if (tsk->nr_dirtied) in do_exit()
870 __this_cpu_add(dirty_throttle_leaks, tsk->nr_dirtied); in do_exit()
874 lockdep_free_task(tsk); in do_exit()
1391 static int do_wait_thread(struct wait_opts *wo, struct task_struct *tsk) in do_wait_thread() argument
1395 list_for_each_entry(p, &tsk->children, sibling) { in do_wait_thread()
1405 static int ptrace_do_wait(struct wait_opts *wo, struct task_struct *tsk) in ptrace_do_wait() argument
1409 list_for_each_entry(p, &tsk->ptraced, ptrace_entry) { in ptrace_do_wait()
1443 struct task_struct *tsk; in do_wait() local
1465 tsk = current; in do_wait()
1467 retval = do_wait_thread(wo, tsk); in do_wait()
1471 retval = ptrace_do_wait(wo, tsk); in do_wait()
1477 } while_each_thread(current, tsk); in do_wait()