From 5df9096cba682bc75d75ba05a1ddcfc3ce907c83 Mon Sep 17 00:00:00 2001 From: Doug MacEachern Date: Wed, 23 Nov 2005 03:09:59 +0000 Subject: [PATCH] add proc_state.processor --- src/os/linux/linux_sigar.c | 23 ++++++++++++++++++++++- src/os/linux/sigar_os.h | 1 + 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/os/linux/linux_sigar.c b/src/os/linux/linux_sigar.c index 1dd7f985..fd11c497 100644 --- a/src/os/linux/linux_sigar.c +++ b/src/os/linux/linux_sigar.c @@ -627,6 +627,23 @@ static int proc_stat_read(sigar_t *sigar, sigar_pid_t pid) pstat->vsize = sigar_strtoul(ptr); pstat->rss = pageshift(sigar_strtoul(ptr)); + ptr = sigar_skip_token(ptr); /* startcode */ + ptr = sigar_skip_token(ptr); /* endcode */ + ptr = sigar_skip_token(ptr); /* startstack */ + ptr = sigar_skip_token(ptr); /* kstkesp */ + ptr = sigar_skip_token(ptr); /* kstkeip */ + ptr = sigar_skip_token(ptr); /* signal */ + ptr = sigar_skip_token(ptr); /* blocked */ + ptr = sigar_skip_token(ptr); /* sigignore */ + ptr = sigar_skip_token(ptr); /* sigcache */ + ptr = sigar_skip_token(ptr); /* wchan */ + ptr = sigar_skip_token(ptr); /* nswap */ + ptr = sigar_skip_token(ptr); /* cnswap */ + ptr = sigar_skip_token(ptr); /* exit_signal */ + + ptr = sigar_skip_token(ptr); + pstat->processor = sigar_strtoul(ptr); + return SIGAR_OK; } @@ -736,7 +753,11 @@ int sigar_proc_state_get(sigar_t *sigar, sigar_pid_t pid, procstate->tty = pstat->tty; procstate->priority = pstat->priority; procstate->nice = pstat->nice; - procstate->processor = SIGAR_FIELD_NOTIMPL; + procstate->processor = pstat->processor; + + if (is_ht_enabled(sigar)) { + procstate->processor /= sigar->lcpu; + } proc_status_get(sigar, pid, procstate); diff --git a/src/os/linux/sigar_os.h b/src/os/linux/sigar_os.h index 2f84f695..737f95a0 100644 --- a/src/os/linux/sigar_os.h +++ b/src/os/linux/sigar_os.h @@ -28,6 +28,7 @@ typedef struct { sigar_uint64_t stime; char name[SIGAR_PROC_NAME_LEN]; char state; + int processor; } linux_proc_stat_t; typedef enum {