diff --git a/proc/meminfo.c b/proc/meminfo.c index 4613aa71..beca4b22 100644 --- a/proc/meminfo.c +++ b/proc/meminfo.c @@ -26,6 +26,7 @@ #include #include #include + #include #include "procps-private.h" @@ -67,12 +68,13 @@ struct procps_meminfo { * * Returns: a new meminfo info container */ -PROCPS_EXPORT int procps_meminfo_new(struct procps_meminfo **info) +PROCPS_EXPORT int procps_meminfo_new ( + struct procps_meminfo **info) { struct procps_meminfo *m; m = calloc(1, sizeof(struct procps_meminfo)); if (!m) - return -ENOMEM; + return -ENOMEM; m->refcount = 1; m->meminfo_fd = -1; @@ -86,7 +88,8 @@ PROCPS_EXPORT int procps_meminfo_new(struct procps_meminfo **info) * Read the data out of /proc/meminfo putting the information * into the supplied info structure */ -PROCPS_EXPORT int procps_meminfo_read(struct procps_meminfo *info) +PROCPS_EXPORT int procps_meminfo_read ( + struct procps_meminfo *info) { char buf[8192]; char *head, *tail; @@ -94,140 +97,142 @@ PROCPS_EXPORT int procps_meminfo_read(struct procps_meminfo *info) unsigned long *valptr; if (info == NULL) - return -1; + return -1; memset(&(info->data), 0, sizeof(struct meminfo_data)); /* read in the data */ if (-1 == info->meminfo_fd && (info->meminfo_fd = open(MEMINFO_FILE, O_RDONLY)) == -1) { - return -errno; + return -errno; } if (lseek(info->meminfo_fd, 0L, SEEK_SET) == -1) { - return -errno; + return -errno; } if ((size = read(info->meminfo_fd, buf, sizeof(buf)-1)) < 0) { - return -1; + return -1; } buf[size] = '\0'; /* Scan the file */ head = buf; do { - tail = strchr(head, ' '); - if (!tail) - break; - *tail = '\0'; - valptr = NULL; - if (0 == strcmp(head, "Active:")) { - valptr = &(info->data.active); - } else if (0 == strcmp(head, "Inactive:")) { - valptr = &(info->data.inactive); - } else if (0 == strcmp(head, "HighFree:")) { - valptr = &(info->data.high_free); - } else if (0 == strcmp(head, "HighTotal:")) { - valptr = &(info->data.high_total); - } else if (0 == strcmp(head, "LowFree:")) { - valptr = &(info->data.low_free); - } else if (0 == strcmp(head, "LowTotal:")) { - valptr = &(info->data.low_total); - } else if (0 == strcmp(head, "MemAvailable:")) { - valptr = &(info->data.available); - } else if (0 == strcmp(head, "Buffers:")) { - valptr = &(info->data.buffers); - } else if (0 == strcmp(head, "Cached:")) { - valptr = &(info->data.cached); - } else if (0 == strcmp(head, "MemFree:")) { - valptr = &(info->data.free); - } else if (0 == strcmp(head, "Shmem:")) { - valptr = &(info->data.shared); - } else if (0 == strcmp(head, "MemTotal:")) { - 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; - if (valptr) { - *valptr = strtoul(head, &tail, 10); - } + tail = strchr(head, ' '); + if (!tail) + break; + *tail = '\0'; + valptr = NULL; + if (0 == strcmp(head, "Active:")) { + valptr = &(info->data.active); + } else if (0 == strcmp(head, "Inactive:")) { + valptr = &(info->data.inactive); + } else if (0 == strcmp(head, "HighFree:")) { + valptr = &(info->data.high_free); + } else if (0 == strcmp(head, "HighTotal:")) { + valptr = &(info->data.high_total); + } else if (0 == strcmp(head, "LowFree:")) { + valptr = &(info->data.low_free); + } else if (0 == strcmp(head, "LowTotal:")) { + valptr = &(info->data.low_total); + } else if (0 == strcmp(head, "MemAvailable:")) { + valptr = &(info->data.available); + } else if (0 == strcmp(head, "Buffers:")) { + valptr = &(info->data.buffers); + } else if (0 == strcmp(head, "Cached:")) { + valptr = &(info->data.cached); + } else if (0 == strcmp(head, "MemFree:")) { + valptr = &(info->data.free); + } else if (0 == strcmp(head, "Shmem:")) { + valptr = &(info->data.shared); + } else if (0 == strcmp(head, "MemTotal:")) { + 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; + if (valptr) { + *valptr = strtoul(head, &tail, 10); + } - tail = strchr(head, '\n'); - if (!tail) - break; - head = tail + 1; + tail = strchr(head, '\n'); + if (!tail) + break; + head = tail + 1; } while(tail); return 0; } -PROCPS_EXPORT struct procps_meminfo *procps_meminfo_ref(struct procps_meminfo *info) +PROCPS_EXPORT struct procps_meminfo *procps_meminfo_ref ( + struct procps_meminfo *info) { if (info == NULL) - return NULL; + return NULL; info->refcount++; return info; } -PROCPS_EXPORT struct procps_meminfo *procps_meminfo_unref(struct procps_meminfo *info) +PROCPS_EXPORT struct procps_meminfo *procps_meminfo_unref ( + struct procps_meminfo *info) { if (info == NULL) - return NULL; + return NULL; info->refcount--; if (info->refcount > 0) - return NULL; + return NULL; free(info); return NULL; } /* Accessor functions */ -PROCPS_EXPORT unsigned long procps_meminfo_get( - struct procps_meminfo *info, - enum meminfo_item item) +PROCPS_EXPORT unsigned long procps_meminfo_get ( + struct procps_meminfo *info, + enum meminfo_item item) { - switch(item) { - case PROCPS_MEM_ACTIVE: - return info->data.active; - 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; + switch (item) { + case PROCPS_MEM_ACTIVE: + return info->data.active; + 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; } return 0; } diff --git a/proc/meminfo.h b/proc/meminfo.h index 474b6e9f..aaa5dece 100644 --- a/proc/meminfo.h +++ b/proc/meminfo.h @@ -26,33 +26,36 @@ __BEGIN_DECLS -struct procps_meminfo; -int procps_meminfo_new(struct procps_meminfo **info); -int procps_meminfo_read(struct procps_meminfo *info); -struct procps_meminfo *procps_meminfo_ref(struct procps_meminfo *info); -struct procps_meminfo *procps_meminfo_unref(struct procps_meminfo *info); - enum meminfo_item { - 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_ACTIVE, PROCPS_MEM_AVAILABLE, PROCPS_MEM_BUFFERS, PROCPS_MEM_CACHED, PROCPS_MEM_FREE, + PROCPS_MEM_INACTIVE, PROCPS_MEM_SHARED, PROCPS_MEM_TOTAL, PROCPS_MEM_USED, PROCPS_SWAP_FREE, PROCPS_SWAP_TOTAL, - PROCPS_SWAP_USED, + PROCPS_SWAP_USED }; -unsigned long procps_meminfo_get(struct procps_meminfo *info, enum meminfo_item item); + +struct procps_meminfo; + +int procps_meminfo_new (struct procps_meminfo **info); +int procps_meminfo_read (struct procps_meminfo *info); + +struct procps_meminfo *procps_meminfo_ref (struct procps_meminfo *info); +struct procps_meminfo *procps_meminfo_unref (struct procps_meminfo *info); + +unsigned long procps_meminfo_get (struct procps_meminfo *info, enum meminfo_item item); __END_DECLS #endif diff --git a/proc/vmstat.c b/proc/vmstat.c index 3f79d028..9bb9db21 100644 --- a/proc/vmstat.c +++ b/proc/vmstat.c @@ -41,12 +41,13 @@ struct procps_vmstat { * * Returns: a new procps_vmstat container */ -PROCPS_EXPORT int procps_vmstat_new(struct procps_vmstat **info) +PROCPS_EXPORT int procps_vmstat_new ( + struct procps_vmstat **info) { struct procps_vmstat *v; v = calloc(1, sizeof(struct procps_vmstat)); if (!v) - return -ENOMEM; + return -ENOMEM; v->refcount = 1; v->vmstat_fd = -1; @@ -62,7 +63,8 @@ PROCPS_EXPORT int procps_vmstat_new(struct procps_vmstat **info) * * Returns: 0 on success, negative on error */ -PROCPS_EXPORT int procps_vmstat_read(struct procps_vmstat *info) +PROCPS_EXPORT int procps_vmstat_read ( + struct procps_vmstat *info) { char buf[8192]; char *head, *tail; @@ -70,85 +72,87 @@ PROCPS_EXPORT int procps_vmstat_read(struct procps_vmstat *info) unsigned long *valptr; if (info == NULL) - return -1; + return -1; memset(&(info->data), 0, sizeof(struct vmstat_data)); /* read in the data */ if (-1 == info->vmstat_fd && (info->vmstat_fd = open(VMSTAT_FILE, O_RDONLY)) == -1) { - return -errno; + return -errno; } if (lseek(info->vmstat_fd, 0L, SEEK_SET) == -1) { - return -errno; + return -errno; } if ((size = read(info->vmstat_fd, buf, sizeof(buf)-1)) < 0) { - return -1; + return -1; } buf[size] = '\0'; /* Scan the file */ head = buf; do { - tail = strchr(head, ' '); - if (!tail) - break; - *tail = '\0'; - valptr = NULL; - if (0 == strcmp(head, "pgpgin")) { - valptr = &(info->data.pgpgin); - }else if (0 == strcmp(head, "pgpgout")) { - valptr = &(info->data.pgpgout); - }else if (0 == strcmp(head, "pswpin")) { - valptr = &(info->data.pswpin); - }else if (0 == strcmp(head, "pswpout")) { - valptr = &(info->data.pswpout); - } - head = tail+1; - if (valptr) { - *valptr = strtoul(head, &tail, 10); - } + tail = strchr(head, ' '); + if (!tail) + break; + *tail = '\0'; + valptr = NULL; + if (0 == strcmp(head, "pgpgin")) { + valptr = &(info->data.pgpgin); + }else if (0 == strcmp(head, "pgpgout")) { + valptr = &(info->data.pgpgout); + }else if (0 == strcmp(head, "pswpin")) { + valptr = &(info->data.pswpin); + }else if (0 == strcmp(head, "pswpout")) { + valptr = &(info->data.pswpout); + } + head = tail+1; + if (valptr) { + *valptr = strtoul(head, &tail, 10); + } - tail = strchr(head, '\n'); - if (!tail) - break; - head = tail + 1; + tail = strchr(head, '\n'); + if (!tail) + break; + head = tail + 1; } while(tail); return 0; } -PROCPS_EXPORT struct procps_vmstat *procps_vmstat_ref(struct procps_vmstat *info) +PROCPS_EXPORT struct procps_vmstat *procps_vmstat_ref ( + struct procps_vmstat *info) { if (info == NULL) - return NULL; + return NULL; info->refcount++; return info; } -PROCPS_EXPORT struct procps_vmstat *procps_vmstat_unref(struct procps_vmstat *info) +PROCPS_EXPORT struct procps_vmstat *procps_vmstat_unref ( + struct procps_vmstat *info) { if (info == NULL) - return NULL; + return NULL; info->refcount--; if (info->refcount > 0) - return NULL; + return NULL; free(info); return NULL; } /* Accessor functions */ -PROCPS_EXPORT unsigned long procps_vmstat_get( - struct procps_vmstat *info, - enum vmstat_item item) +PROCPS_EXPORT unsigned long procps_vmstat_get ( + struct procps_vmstat *info, + enum vmstat_item item) { - switch(item) { - case PROCPS_VMSTAT_PGPGIN: - return info->data.pgpgin; - case PROCPS_VMSTAT_PGPGOUT: - return info->data.pgpgout; - case PROCPS_VMSTAT_PSWPIN: - return info->data.pswpin; - case PROCPS_VMSTAT_PSWPOUT: - return info->data.pswpout; + switch (item) { + case PROCPS_VMSTAT_PGPGIN: + return info->data.pgpgin; + case PROCPS_VMSTAT_PGPGOUT: + return info->data.pgpgout; + case PROCPS_VMSTAT_PSWPIN: + return info->data.pswpin; + case PROCPS_VMSTAT_PSWPOUT: + return info->data.pswpout; } return 0; } diff --git a/proc/vmstat.h b/proc/vmstat.h index 9f64d8b1..7c55dcf7 100644 --- a/proc/vmstat.h +++ b/proc/vmstat.h @@ -27,19 +27,22 @@ __BEGIN_DECLS -struct procps_vmstat; -int procps_vmstat_new(struct procps_vmstat **info); -int procps_vmstat_read(struct procps_vmstat *info); -struct procps_vmstat *procps_vmstat_ref(struct procps_vmstat *info); -struct procps_vmstat *procps_vmstat_unref(struct procps_vmstat *info); - enum vmstat_item { PROCPS_VMSTAT_PGPGIN, PROCPS_VMSTAT_PGPGOUT, PROCPS_VMSTAT_PSWPIN, PROCPS_VMSTAT_PSWPOUT }; -unsigned long procps_vmstat_get(struct procps_vmstat *info, enum vmstat_item item); + +struct procps_vmstat; + +int procps_vmstat_new (struct procps_vmstat **info); +int procps_vmstat_read (struct procps_vmstat *info); + +struct procps_vmstat *procps_vmstat_ref (struct procps_vmstat *info); +struct procps_vmstat *procps_vmstat_unref (struct procps_vmstat *info); + +unsigned long procps_vmstat_get (struct procps_vmstat *info, enum vmstat_item item); __END_DECLS #endif