Lines Matching defs:proc

93 static void free_proc(struct proc_info *proc);
95 static int read_stat(char *filename, struct proc_info *proc);
96 static void read_policy(int pid, struct proc_info *proc);
97 static void add_proc(int proc_num, struct proc_info *proc);
98 static int read_cmdline(char *filename, struct proc_info *proc);
99 static int read_status(char *filename, struct proc_info *proc);
197 struct proc_info *proc;
200 proc = free_procs;
204 proc = malloc(sizeof(*proc));
205 if (!proc) die("Could not allocate struct process_info.\n");
210 return proc;
213 static void free_proc(struct proc_info *proc) {
214 proc->next = free_procs;
215 free_procs = proc;
229 struct proc_info *proc;
234 proc_dir = opendir("/proc");
235 if (!proc_dir) die("Could not open /proc.\n");
240 file = fopen("/proc/stat", "r");
241 if (!file) die("Could not open /proc/stat.\n");
256 proc = alloc_proc();
258 proc->pid = proc->tid = pid;
260 sprintf(filename, "/proc/%d/stat", pid);
261 read_stat(filename, proc);
263 sprintf(filename, "/proc/%d/cmdline", pid);
264 read_cmdline(filename, proc);
266 sprintf(filename, "/proc/%d/status", pid);
267 read_status(filename, proc);
269 read_policy(pid, proc);
271 proc->num_threads = 0;
273 sprintf(filename, "/proc/%d/cmdline", pid);
276 sprintf(filename, "/proc/%d/status", pid);
279 proc = NULL;
282 sprintf(filename, "/proc/%d/task", pid);
293 proc = alloc_proc();
295 proc->pid = pid; proc->tid = tid;
297 sprintf(filename, "/proc/%d/task/%d/stat", pid, tid);
298 read_stat(filename, proc);
300 read_policy(tid, proc);
302 strcpy(proc->name, cur_proc.name);
303 proc->uid = cur_proc.uid;
304 proc->gid = cur_proc.gid;
306 add_proc(proc_num++, proc);
308 proc->num_threads++;
315 add_proc(proc_num++, proc);
324 static int read_stat(char *filename, struct proc_info *proc) {
340 strncpy(proc->tname, open_paren + 1, THREAD_NAME_LEN);
341 proc->tname[THREAD_NAME_LEN-1] = 0;
347 &proc->state, &proc->utime, &proc->stime, &proc->vss, &proc->rss, &proc->prs);
352 static void add_proc(int proc_num, struct proc_info *proc) {
362 new_procs[proc_num] = proc;
365 static int read_cmdline(char *filename, struct proc_info *proc) {
375 strncpy(proc->name, line, PROC_NAME_LEN);
376 proc->name[PROC_NAME_LEN-1] = 0;
378 proc->name[0] = 0;
382 static void read_policy(int pid, struct proc_info *proc) {
385 strlcpy(proc->policy, "unk", POLICY_NAME_LEN);
387 strlcpy(proc->policy, get_sched_policy_name(p), POLICY_NAME_LEN);
388 proc->policy[2] = '\0';
392 static int read_status(char *filename, struct proc_info *proc) {
404 proc->uid = uid; proc->gid = gid;
410 struct proc_info *old_proc, *proc;
461 proc = new_procs[i];
463 if (!proc || (max_procs && (i >= max_procs)))
465 user = getpwuid(proc->uid);
466 group = getgrgid(proc->gid);
470 snprintf(user_buf, 20, "%d", proc->uid);
476 snprintf(group_buf, 20, "%d", proc->gid);
480 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,
481 proc->vss / 1024, proc->rss * getpagesize() / 1024, proc->policy, user_str, proc->name[0] != 0 ? proc->name : proc->tname);
483 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,
484 proc->vss / 1024, proc->rss * getpagesize() / 1024, proc->policy, user_str, proc->tname, proc->name);