• Home
  • Raw
  • Download

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;
2021 static void killinfo_log(struct proc* procp, int min_oom_score, int rss_kb,
2025 android_log_write_int32(ctx, procp->pid);
2026 android_log_write_int32(ctx, procp->uid);
2027 android_log_write_int32(ctx, procp->oomadj);
2128 struct proc *procp;
2132 procp = proc_adj_tail(oom_score);
2134 procp = proc_adj_prev(oom_score, prev_pid);
2135 if (!procp) {
2137 procp = proc_adj_tail(oom_score);
2142 if (!procp || procp == proc_adj_head(oom_score)) {
2147 target_proc = *procp;
2289 /* Kill one process specified by procp. Returns the size (in pages) of the process killed */
2290 static int kill_one_process(struct proc* procp, int min_oom_score, struct kill_info *ki,
2293 int pid = procp->pid;
2294 int pidfd = procp->pidfd;
2295 uid_t uid = procp->uid;
2307 if (!procp->valid || !read_proc_status(pid, buf, sizeof(buf))) {
2335 procp->oomadj, min_oom_score, ki ? ki->max_thrashing : -1);
2353 inc_killcnt(procp->oomadj);
2360 "kB swap; reason: %s", taskname, pid, uid, procp->oomadj, rss_kb, swap_kb,
2367 "kb swap", taskname, pid, uid, procp->oomadj, rss_kb, swap_kb);
2369 killinfo_log(procp, min_oom_score, rss_kb, swap_kb, ki, mi, wi, tm, pd);
2373 kill_st.oom_score = procp->oomadj;
2385 * WARNING: After pid_remove() procp is freed and can't be used!
2405 struct proc *procp;
2416 procp = choose_heaviest_task ?
2419 if (!procp)
2422 killed_size = kill_one_process(procp, min_score_adj, ki, mi, wi, tm, pd);