library: Fix up stat API
Adjusted vmstat to use the new API for memory and CPU statistics
This commit is contained in:
@@ -38,13 +38,13 @@ struct meminfo_data {
|
||||
unsigned long high_total;
|
||||
unsigned long low_free;
|
||||
unsigned long low_total;
|
||||
unsigned long main_available;
|
||||
unsigned long main_buffers;
|
||||
unsigned long main_cached;
|
||||
unsigned long main_free;
|
||||
unsigned long main_shared;
|
||||
unsigned long main_total;
|
||||
unsigned long main_used;
|
||||
unsigned long available;
|
||||
unsigned long buffers;
|
||||
unsigned long cached;
|
||||
unsigned long free;
|
||||
unsigned long shared;
|
||||
unsigned long total;
|
||||
unsigned long used;
|
||||
unsigned long swap_free;
|
||||
unsigned long swap_total;
|
||||
unsigned long swap_used;
|
||||
@@ -131,23 +131,23 @@ PROCPS_EXPORT int procps_meminfo_read(struct procps_meminfo *info)
|
||||
} else if (0 == strcmp(head, "LowTotal:")) {
|
||||
valptr = &(info->data.low_total);
|
||||
} else if (0 == strcmp(head, "MemAvailable:")) {
|
||||
valptr = &(info->data.main_available);
|
||||
valptr = &(info->data.available);
|
||||
} else if (0 == strcmp(head, "Buffers:")) {
|
||||
valptr = &(info->data.main_buffers);
|
||||
valptr = &(info->data.buffers);
|
||||
} else if (0 == strcmp(head, "Cached:")) {
|
||||
valptr = &(info->data.main_cached);
|
||||
valptr = &(info->data.cached);
|
||||
} else if (0 == strcmp(head, "MemFree:")) {
|
||||
valptr = &(info->data.main_free);
|
||||
valptr = &(info->data.free);
|
||||
} else if (0 == strcmp(head, "Shmem:")) {
|
||||
valptr = &(info->data.main_shared);
|
||||
valptr = &(info->data.shared);
|
||||
} else if (0 == strcmp(head, "MemTotal:")) {
|
||||
valptr = &(info->data.main_total);
|
||||
valptr = &(info->data.total);
|
||||
} else if (0 == strcmp(head, "SwapFree:")) {
|
||||
valptr = &(info->data.swap_free);
|
||||
} else if (0 == strcmp(head, "SwapTotal:")) {
|
||||
valptr = &(info->data.swap_total);
|
||||
}
|
||||
head - tail+1;
|
||||
head = tail+1;
|
||||
if (valptr) {
|
||||
*valptr = strtoul(head, &tail, 10);
|
||||
}
|
||||
@@ -186,9 +186,45 @@ PROCPS_EXPORT unsigned long procps_meminfo_get(
|
||||
enum meminfo_item item)
|
||||
{
|
||||
switch(item) {
|
||||
case PROCPS_MEMINFO_ACTIVE:
|
||||
case PROCPS_MEM_ACTIVE:
|
||||
return info->data.active;
|
||||
case PROCPS_MEMINFO_SWAP_USED:
|
||||
case PROCPS_MEM_INACTIVE:
|
||||
return info->data.inactive;
|
||||
case PROCPS_MEMHI_FREE:
|
||||
return info->data.high_free;
|
||||
case PROCPS_MEMHI_TOTAL:
|
||||
return info->data.high_total;
|
||||
case PROCPS_MEMHI_USED:
|
||||
if (info->data.high_free > info->data.high_total)
|
||||
return 0;
|
||||
return info->data.high_total - info->data.high_free;
|
||||
case PROCPS_MEMLO_FREE:
|
||||
return info->data.low_free;
|
||||
case PROCPS_MEMLO_TOTAL:
|
||||
return info->data.low_total;
|
||||
case PROCPS_MEMLO_USED:
|
||||
if (info->data.low_free > info->data.low_total)
|
||||
return 0;
|
||||
return info->data.low_total - info->data.low_free;
|
||||
case PROCPS_MEM_AVAILABLE:
|
||||
return info->data.available;
|
||||
case PROCPS_MEM_BUFFERS:
|
||||
return info->data.buffers;
|
||||
case PROCPS_MEM_CACHED:
|
||||
return info->data.cached;
|
||||
case PROCPS_MEM_FREE:
|
||||
return info->data.free;
|
||||
case PROCPS_MEM_SHARED:
|
||||
return info->data.shared;
|
||||
case PROCPS_MEM_TOTAL:
|
||||
return info->data.total;
|
||||
case PROCPS_MEM_USED:
|
||||
return info->data.used;
|
||||
case PROCPS_SWAP_FREE:
|
||||
return info->data.swap_free;
|
||||
case PROCPS_SWAP_TOTAL:
|
||||
return info->data.swap_total;
|
||||
case PROCPS_SWAP_USED:
|
||||
if (info->data.swap_free > info->data.swap_total)
|
||||
return 0;
|
||||
return info->data.swap_total - info->data.swap_free;
|
||||
|
@@ -33,22 +33,24 @@ struct procps_meminfo *procps_meminfo_ref(struct procps_meminfo *info);
|
||||
struct procps_meminfo *procps_meminfo_unref(struct procps_meminfo *info);
|
||||
|
||||
enum meminfo_item {
|
||||
PROCPS_MEMINFO_ACTIVE,
|
||||
PROCPS_MEMINFO_INACTIVE,
|
||||
PROCPS_MEMINFO_HIGH_FREE,
|
||||
PROCPS_MEMINFO_HIGH_TOTAL,
|
||||
PROCPS_MEMINFO_LOW_FREE,
|
||||
PROCPS_MEMINFO_LOW_TOTAL,
|
||||
PROCPS_MEMINFO_MAIN_AVAILABLE,
|
||||
PROCPS_MEMINFO_MAIN_BUFFERS,
|
||||
PROCPS_MEMINFO_MAIN_CACHED,
|
||||
PROCPS_MEMINFO_MAIN_FREE,
|
||||
PROCPS_MEMINFO_MAIN_SHARED,
|
||||
PROCPS_MEMINFO_MAIN_TOTAL,
|
||||
PROCPS_MEMINFO_MAIN_USED,
|
||||
PROCPS_MEMINFO_SWAP_FREE,
|
||||
PROCPS_MEMINFO_SWAP_TOTAL,
|
||||
PROCPS_MEMINFO_SWAP_USED,
|
||||
PROCPS_MEM_ACTIVE,
|
||||
PROCPS_MEM_INACTIVE,
|
||||
PROCPS_MEMHI_FREE,
|
||||
PROCPS_MEMHI_TOTAL,
|
||||
PROCPS_MEMHI_USED,
|
||||
PROCPS_MEMLO_FREE,
|
||||
PROCPS_MEMLO_TOTAL,
|
||||
PROCPS_MEMLO_USED,
|
||||
PROCPS_MEM_AVAILABLE,
|
||||
PROCPS_MEM_BUFFERS,
|
||||
PROCPS_MEM_CACHED,
|
||||
PROCPS_MEM_FREE,
|
||||
PROCPS_MEM_SHARED,
|
||||
PROCPS_MEM_TOTAL,
|
||||
PROCPS_MEM_USED,
|
||||
PROCPS_SWAP_FREE,
|
||||
PROCPS_SWAP_TOTAL,
|
||||
PROCPS_SWAP_USED,
|
||||
};
|
||||
unsigned long procps_meminfo_get(struct procps_meminfo *info, enum meminfo_item item);
|
||||
|
||||
|
@@ -188,9 +188,9 @@ PROCPS_EXPORT jiff procps_stat_get_cpu(struct procps_stat_info *info, enum procp
|
||||
PROCPS_EXPORT unsigned int procps_stat_get(struct procps_stat_info *info, enum procps_stat_item item)
|
||||
{
|
||||
switch(item) {
|
||||
case PROCPS_STAT_INTERRUPTS:
|
||||
case PROCPS_STAT_INTR:
|
||||
return info->data.intr;
|
||||
case PROCPS_STAT_CONTEXT:
|
||||
case PROCPS_STAT_CTXT:
|
||||
return info->data.ctxt;
|
||||
case PROCPS_STAT_BTIME:
|
||||
return info->data.btime;
|
||||
|
@@ -36,8 +36,8 @@ enum procps_cpu_item {
|
||||
};
|
||||
|
||||
enum procps_stat_item {
|
||||
PROCPS_STAT_INTERRUPTS,
|
||||
PROCPS_STAT_CONTEXT,
|
||||
PROCPS_STAT_INTR,
|
||||
PROCPS_STAT_CTXT,
|
||||
PROCPS_STAT_BTIME,
|
||||
PROCPS_STAT_PROCS,
|
||||
PROCPS_STAT_PROCS_BLK,
|
||||
|
@@ -107,13 +107,14 @@ PROCPS_EXPORT char *sprint_uptime(void)
|
||||
double uptime_secs, idle_secs;
|
||||
double av1, av5, av15;
|
||||
|
||||
upbuf[0] = '\0';
|
||||
if (time(&realseconds) < 0)
|
||||
return NULL;
|
||||
return upbuf;
|
||||
realtime = localtime(&realseconds);
|
||||
pos = sprintf(upbuf, " %02d:%02d:%02d ",
|
||||
realtime->tm_hour, realtime->tm_min, realtime->tm_sec);
|
||||
if (uptime(&uptime_secs, &idle_secs) < 0)
|
||||
return NULL;
|
||||
return upbuf;
|
||||
|
||||
updays = ((int) uptime_secs / (60*60*24));
|
||||
uphours = ((int) uptime_secs / (60*24)) % 24;
|
||||
@@ -134,7 +135,7 @@ PROCPS_EXPORT char *sprint_uptime(void)
|
||||
users, users == 1 ? "" : "s",
|
||||
av1, av5, av15);
|
||||
|
||||
|
||||
return upbuf;
|
||||
}
|
||||
|
||||
PROCPS_EXPORT char *sprint_uptime_short(void)
|
||||
@@ -146,8 +147,9 @@ PROCPS_EXPORT char *sprint_uptime_short(void)
|
||||
struct tm *realtime;
|
||||
double uptime_secs, idle_secs;
|
||||
|
||||
shortbuf[0] = '\0';
|
||||
if (uptime(&uptime_secs, &idle_secs) < 0)
|
||||
return NULL;
|
||||
return shortbuf;
|
||||
|
||||
updecades = (int) uptime_secs / (60*60*24*365*10);
|
||||
upyears = ((int) uptime_secs / (60*60*24*365)) % 10;
|
||||
|
Reference in New Issue
Block a user