int64_t soft_irq;
};
+enum {
+ PROCESS_STAT_FIELD_PID,
+ PROCESS_STAT_FIELD_COMM,
+ PROCESS_STAT_FIELD_STATE,
+ PROCESS_STAT_FIELD_PPID,
+ PROCESS_STAT_FIELD_PGID,
+ PROCESS_STAT_FIELD_MAX,
+};
+
int kernel_get_online_cpu_num(void);
int kernel_get_possible_cpu_num(void);
int kernel_get_memory_info(const char *key, u_int64_t *val);
int kernel_get_memory_total(u_int64_t *val);
+
+int kernel_get_process_stat_fields(pid_t pid, char *buffer, int buf_len,
+ char *stat_fields[PROCESS_STAT_FIELD_MAX]);
#endif
return 0;
}
+
+int kernel_get_process_stat_fields(pid_t pid, char *buffer, int buf_len,
+ char *stat_fields[PROCESS_STAT_FIELD_MAX])
+{
+ char path[BUFF_MAX];
+ char *pbuffer;
+ FILE *fd;
+ int i;
+
+ snprintf(path, BUFF_MAX, "/proc/%d/stat", pid);
+
+ fd = fopen(path, "r");
+ if (!fd) {
+ _E("failed to open process %d stat", pid);
+ return -EIO;
+ }
+
+ pbuffer = fgets(buffer, buf_len, fd);
+ if (!pbuffer) {
+ _E("failed to read process %d stat", pid);
+ return -EIO;
+ }
+
+ for (i = 0; i < PROCESS_STAT_FIELD_MAX; i++)
+ stat_fields[i] = strsep(&pbuffer, " ");
+
+ return 0;
+}