Lines Matching defs:procp
669 static bool claim_record(struct proc* procp, pid_t pid) {
670 if (procp->reg_pid == pid) {
674 if (procp->reg_pid == 0) {
676 procp->reg_pid = pid;
687 struct proc* procp = pidhash[i];
688 while (procp) {
689 if (procp->reg_pid == pid) {
690 procp->reg_pid = 0;
692 procp = procp->pidhash_next;
891 struct proc *procp;
893 for (procp = pidhash[pid_hashfn(pid)]; procp && procp->pid != pid;
894 procp = procp->pidhash_next)
897 return procp;
924 static void proc_slot(struct proc *procp) {
925 int adjslot = ADJTOSLOT(procp->oomadj);
928 adjslot_insert(&procadjslot_list[adjslot], &procp->asl);
932 static void proc_unslot(struct proc *procp) {
935 adjslot_remove(&procp->asl);
938 static void proc_insert(struct proc *procp) {
939 int hval = pid_hashfn(procp->pid);
941 procp->pidhash_next = pidhash[hval];
942 pidhash[hval] = procp;
943 proc_slot(procp);
949 struct proc *procp;
952 for (procp = pidhash[hval], prevp = NULL; procp && procp->pid != pid;
953 procp = procp->pidhash_next)
954 prevp = procp;
956 if (!procp)
960 pidhash[hval] = procp->pidhash_next;
962 prevp->pidhash_next = procp->pidhash_next;
964 proc_unslot(procp);
969 if (procp->pidfd >= 0 && procp->pidfd != last_kill_pid_or_fd) {
970 close(procp->pidfd);
972 free(procp);
978 struct proc *procp = pid_lookup(pid);
980 if (procp) {
981 procp->valid = false;
1115 struct proc *procp;
1212 procp = pid_lookup(params.pid);
1213 if (!procp) {
1224 procp = static_cast<struct proc*>(calloc(1, sizeof(struct proc)));
1225 if (!procp) {
1230 procp->pid = params.pid;
1231 procp->pidfd = pidfd;
1232 procp->uid = params.uid;
1233 procp->reg_pid = cred->pid;
1234 procp->oomadj = params.oomadj;
1235 procp->valid = true;
1236 proc_insert(procp);
1238 if (!claim_record(procp, cred->pid)) {
1246 proc_unslot(procp);
1247 procp->oomadj = params.oomadj;
1248 proc_slot(procp);
1254 struct proc *procp;
1271 procp = pid_lookup(params.pid);
1272 if (!procp) {
1276 if (!claim_record(procp, cred->pid)) {
1286 * WARNING: After pid_remove() procp is freed and can't be used!
1294 struct proc *procp;
1303 procp = pidhash[i];
1304 while (procp) {
1305 next = procp->pidhash_next;
1307 if (claim_record(procp, cred->pid)) {
1308 pid_remove(procp->pid);
1310 procp = next;
2035 static void killinfo_log(struct proc* procp, int min_oom_score, int rss_kb,
2039 android_log_write_int32(ctx, procp->pid);
2040 android_log_write_int32(ctx, procp->uid);
2041 android_log_write_int32(ctx, procp->oomadj);
2142 struct proc *procp;
2146 procp = proc_adj_tail(oom_score);
2148 procp = proc_adj_prev(oom_score, prev_pid);
2149 if (!procp) {
2151 procp = proc_adj_tail(oom_score);
2156 if (!procp || procp == proc_adj_head(oom_score)) {
2161 target_proc = *procp;
2303 /* Kill one process specified by procp. Returns the size (in pages) of the process killed */
2304 static int kill_one_process(struct proc* procp, int min_oom_score, struct kill_info *ki,
2307 int pid = procp->pid;
2308 int pidfd = procp->pidfd;
2309 uid_t uid = procp->uid;
2321 if (!procp->valid || !read_proc_status(pid, buf, sizeof(buf))) {
2349 procp->oomadj, min_oom_score, ki ? ki->max_thrashing : -1);
2351 result = lmkd_free_memory_before_kill_hook(procp, rss_kb / page_k, procp->oomadj,
2378 inc_killcnt(procp->oomadj);
2385 "kB swap; reason: %s", taskname, pid, uid, procp->oomadj, rss_kb, swap_kb,
2392 "kb swap", taskname, pid, uid, procp->oomadj, rss_kb, swap_kb);
2394 killinfo_log(procp, min_oom_score, rss_kb, swap_kb, ki, mi, wi, tm, pd);
2398 kill_st.oom_score = procp->oomadj;
2410 * WARNING: After pid_remove() procp is freed and can't be used!
2430 struct proc *procp;
2441 procp = choose_heaviest_task ?
2444 if (!procp)
2447 killed_size = kill_one_process(procp, min_score_adj, ki, mi, wi, tm, pd);