Home | History | Annotate | Download | only in toolbox

Lines Matching refs:proc

92 static void free_proc(struct proc_info *proc);
94 static int read_stat(char *filename, struct proc_info *proc);
95 static void read_policy(int pid, struct proc_info *proc);
96 static void add_proc(int proc_num, struct proc_info *proc);
97 static int read_cmdline(char *filename, struct proc_info *proc);
98 static int read_status(char *filename, struct proc_info *proc);
196 struct proc_info *proc;
199 proc = free_procs;
203 proc = malloc(sizeof(*proc));
204 if (!proc) die("Could not allocate struct process_info.\n");
209 return proc;
212 static void free_proc(struct proc_info *proc) {
213 proc->next = free_procs;
214 free_procs = proc;
228 struct proc_info *proc;
233 proc_dir = opendir("/proc");
234 if (!proc_dir) die("Could not open /proc.\n");
239 file = fopen("/proc/stat", "r");
240 if (!file) die("Could not open /proc/stat.\n");
255 proc = alloc_proc();
257 proc->pid = proc->tid = pid;
259 sprintf(filename, "/proc/%d/stat", pid);
260 read_stat(filename, proc);
262 sprintf(filename, "/proc/%d/cmdline", pid);
263 read_cmdline(filename, proc);
265 sprintf(filename, "/proc/%d/status", pid);
266 read_status(filename, proc);
268 read_policy(pid, proc);
270 proc->num_threads = 0;
272 sprintf(filename, "/proc/%d/cmdline", pid);
275 sprintf(filename, "/proc/%d/status", pid);
278 proc = NULL;
281 sprintf(filename, "/proc/%d/task", pid);
292 proc = alloc_proc();
294 proc->pid = pid; proc->tid = tid;
296 sprintf(filename, "/proc/%d/task/%d/stat", pid, tid);
297 read_stat(filename, proc);
299 read_policy(tid, proc);
301 strcpy(proc->name, cur_proc.name);
302 proc->uid = cur_proc.uid;
303 proc->gid = cur_proc.gid;
305 add_proc(proc_num++, proc);
307 proc->num_threads++;
314 add_proc(proc_num++, proc);
323 static int read_stat(char *filename, struct proc_info *proc) {
339 strncpy(proc->tname, open_paren + 1, THREAD_NAME_LEN);
340 proc->tname[THREAD_NAME_LEN-1] = 0;
346 &proc->state, &proc->utime, &proc->stime, &proc->vss, &proc->rss, &proc->prs);
351 static void add_proc(int proc_num, struct proc_info *proc) {
361 new_procs[proc_num] = proc;
364 static int read_cmdline(char *filename, struct proc_info *proc) {
374 strncpy(proc->name, line, PROC_NAME_LEN);
375 proc->name[PROC_NAME_LEN-1] = 0;
377 proc->name[0] = 0;
381 static void read_policy(int pid, struct proc_info *proc) {
384 strcpy(proc->policy, "unk");
387 strcpy(proc->policy, "bg");
389 strcpy(proc->policy, "fg");
391 strcpy(proc->policy, "er");
395 static int read_status(char *filename, struct proc_info *proc) {
407 proc->uid = uid; proc->gid = gid;
413 struct proc_info *old_proc, *proc;
461 printf("%5s %5s %2s %4s %1s %7s %7s %3s %-8s %-15s %s\n", "PID", "TID", "PR", "CPU%", "S", "VSS", "RSS", "PCY", "UID", "Thread", "Proc");
464 proc = new_procs[i];
466 if (!proc || (max_procs && (i >= max_procs)))
468 user = getpwuid(proc->uid);
469 group = getgrgid(proc->gid);
473 snprintf(user_buf, 20, "%d", proc->uid);
479 snprintf(group_buf, 20, "%d", proc->gid);
483 printf("%5d %2d %3ld%% %c %5d %6ldK %6ldK %3s %-8.8s %s\n", proc->pid, proc->prs, proc->delta_time * 100 / total_delta_time, proc->state, proc->num_threads,
484 proc->vss / 1024, proc->rss * getpagesize() / 1024, proc->policy, user_str, proc->name[0] != 0 ? proc->name : proc->tname);
486 printf("%5d %5d %2d %3ld%% %c %6ldK %6ldK %3s %-8.8s %-15s %s\n", proc->pid, proc->tid, proc->prs, proc->delta_time * 100 / total_delta_time, proc->state,
487 proc->vss / 1024, proc->rss * getpagesize() / 1024, proc->policy, user_str, proc->tname, proc->name);