Lines Matching refs:p

102 struct task_struct *find_lock_task_mm(struct task_struct *p)  in find_lock_task_mm()  argument
108 for_each_thread(p, t) { in find_lock_task_mm()
131 static bool oom_unkillable_task(struct task_struct *p, in oom_unkillable_task() argument
134 if (is_global_init(p)) in oom_unkillable_task()
136 if (p->flags & PF_KTHREAD) in oom_unkillable_task()
140 if (memcg && !task_in_mem_cgroup(p, memcg)) in oom_unkillable_task()
144 if (!has_intersects_mems_allowed(p, nodemask)) in oom_unkillable_task()
159 unsigned long oom_badness(struct task_struct *p, struct mem_cgroup *memcg, in oom_badness() argument
165 if (oom_unkillable_task(p, memcg, nodemask)) in oom_badness()
168 p = find_lock_task_mm(p); in oom_badness()
169 if (!p) in oom_badness()
172 adj = (long)p->signal->oom_score_adj; in oom_badness()
174 task_unlock(p); in oom_badness()
182 points = get_mm_rss(p->mm) + get_mm_counter(p->mm, MM_SWAPENTS) + in oom_badness()
183 atomic_long_read(&p->mm->nr_ptes) + mm_nr_pmds(p->mm); in oom_badness()
184 task_unlock(p); in oom_badness()
190 if (has_capability_noaudit(p, CAP_SYS_ADMIN)) in oom_badness()
303 struct task_struct *g, *p; in select_bad_process() local
308 for_each_process_thread(g, p) { in select_bad_process()
311 switch (oom_scan_process_thread(oc, p, totalpages)) { in select_bad_process()
313 chosen = p; in select_bad_process()
324 points = oom_badness(p, NULL, oc->nodemask, totalpages); in select_bad_process()
331 chosen = p; in select_bad_process()
355 struct task_struct *p; in dump_tasks() local
360 for_each_process(p) { in dump_tasks()
361 if (oom_unkillable_task(p, memcg, nodemask)) in dump_tasks()
364 task = find_lock_task_mm(p); in dump_tasks()
386 static void dump_header(struct oom_control *oc, struct task_struct *p, in dump_header() argument
396 mem_cgroup_print_oom_info(memcg, p); in dump_header()
492 static bool process_shares_mm(struct task_struct *p, struct mm_struct *mm) in process_shares_mm() argument
496 for_each_thread(p, t) { in process_shares_mm()
509 void oom_kill_process(struct oom_control *oc, struct task_struct *p, in oom_kill_process() argument
513 struct task_struct *victim = p; in oom_kill_process()
525 task_lock(p); in oom_kill_process()
526 if (p->mm && task_will_free_mem(p)) { in oom_kill_process()
527 mark_oom_victim(p); in oom_kill_process()
528 task_unlock(p); in oom_kill_process()
529 put_task_struct(p); in oom_kill_process()
532 task_unlock(p); in oom_kill_process()
535 dump_header(oc, p, memcg); in oom_kill_process()
538 message, task_pid_nr(p), p->comm, points); in oom_kill_process()
547 for_each_thread(p, t) { in oom_kill_process()
551 if (process_shares_mm(child, p->mm)) in oom_kill_process()
568 p = find_lock_task_mm(victim); in oom_kill_process()
569 if (!p) { in oom_kill_process()
572 } else if (victim != p) { in oom_kill_process()
573 get_task_struct(p); in oom_kill_process()
575 victim = p; in oom_kill_process()
604 for_each_process(p) { in oom_kill_process()
605 if (!process_shares_mm(p, mm)) in oom_kill_process()
607 if (same_thread_group(p, victim)) in oom_kill_process()
609 if (unlikely(p->flags & PF_KTHREAD)) in oom_kill_process()
611 if (is_global_init(p)) in oom_kill_process()
613 if (p->signal->oom_score_adj == OOM_SCORE_ADJ_MIN) in oom_kill_process()
616 do_send_sig_info(SIGKILL, SEND_SIG_FORCED, p, true); in oom_kill_process()
675 struct task_struct *p; in out_of_memory() local
721 p = select_bad_process(oc, &points, totalpages); in out_of_memory()
723 if (!p && !is_sysrq_oom(oc)) { in out_of_memory()
727 if (p && p != (void *)-1UL) { in out_of_memory()
728 oom_kill_process(oc, p, points, totalpages, NULL, in out_of_memory()