make iostats usable with sigar_disk_usage_t
This commit is contained in:
parent
5e47762150
commit
3badfe1723
|
@ -1273,7 +1273,7 @@ static iodev_t *get_fsdev(sigar_t *sigar,
|
||||||
|
|
||||||
static int get_iostat_sys(sigar_t *sigar,
|
static int get_iostat_sys(sigar_t *sigar,
|
||||||
const char *dirname,
|
const char *dirname,
|
||||||
sigar_file_system_usage_t *fsusage)
|
sigar_disk_usage_t *fsusage)
|
||||||
{
|
{
|
||||||
char stat[1025], dev[1025];
|
char stat[1025], dev[1025];
|
||||||
char *name, *ptr, *fsdev;
|
char *name, *ptr, *fsdev;
|
||||||
|
@ -1320,7 +1320,7 @@ static int get_iostat_sys(sigar_t *sigar,
|
||||||
|
|
||||||
static int get_iostat_proc_dstat(sigar_t *sigar,
|
static int get_iostat_proc_dstat(sigar_t *sigar,
|
||||||
const char *dirname,
|
const char *dirname,
|
||||||
sigar_file_system_usage_t *fsusage)
|
sigar_disk_usage_t *fsusage)
|
||||||
{
|
{
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
char buffer[1025];
|
char buffer[1025];
|
||||||
|
@ -1415,7 +1415,7 @@ static int get_iostat_proc_dstat(sigar_t *sigar,
|
||||||
|
|
||||||
static int get_iostat_procp(sigar_t *sigar,
|
static int get_iostat_procp(sigar_t *sigar,
|
||||||
const char *dirname,
|
const char *dirname,
|
||||||
sigar_file_system_usage_t *fsusage)
|
sigar_disk_usage_t *fsusage)
|
||||||
{
|
{
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
char buffer[1025];
|
char buffer[1025];
|
||||||
|
@ -1479,6 +1479,35 @@ static int get_iostat_procp(sigar_t *sigar,
|
||||||
return ENOENT;
|
return ENOENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int sigar_disk_usage_get(sigar_t *sigar, const char *name,
|
||||||
|
sigar_disk_usage_t *usage)
|
||||||
|
{
|
||||||
|
SIGAR_DISK_STATS_NOTIMPL(usage); /* init */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 2.2 has metrics /proc/stat, but wtf is the device mapping?
|
||||||
|
* 2.4 has /proc/partitions w/ the metrics.
|
||||||
|
* 2.6 has /proc/partitions w/o the metrics.
|
||||||
|
* instead the metrics are within the /proc-like /sys filesystem.
|
||||||
|
* also has /proc/diskstats
|
||||||
|
*/
|
||||||
|
switch (sigar->iostat) {
|
||||||
|
case IOSTAT_SYS:
|
||||||
|
return get_iostat_sys(sigar, name, usage);
|
||||||
|
case IOSTAT_DISKSTATS:
|
||||||
|
return get_iostat_proc_dstat(sigar, name, usage);
|
||||||
|
case IOSTAT_PARTITIONS:
|
||||||
|
return get_iostat_procp(sigar, name, usage);
|
||||||
|
/*
|
||||||
|
* case IOSTAT_SOME_OTHER_WIERD_THING:
|
||||||
|
* break;
|
||||||
|
*/
|
||||||
|
case IOSTAT_NONE:
|
||||||
|
default:
|
||||||
|
return ENOENT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#include <sys/vfs.h>
|
#include <sys/vfs.h>
|
||||||
|
|
||||||
#define SIGAR_FS_BLOCKS_TO_BYTES(buf, f) \
|
#define SIGAR_FS_BLOCKS_TO_BYTES(buf, f) \
|
||||||
|
@ -1502,38 +1531,8 @@ int sigar_file_system_usage_get(sigar_t *sigar,
|
||||||
fsusage->free_files = buf.f_ffree;
|
fsusage->free_files = buf.f_ffree;
|
||||||
fsusage->use_percent = sigar_file_system_usage_calc_used(sigar, fsusage);
|
fsusage->use_percent = sigar_file_system_usage_calc_used(sigar, fsusage);
|
||||||
|
|
||||||
SIGAR_DISK_STATS_NOTIMPL(fsusage); /* init */
|
(void)sigar_disk_usage_get(sigar, dirname,
|
||||||
|
(sigar_disk_usage_t *)fsusage);
|
||||||
/*
|
|
||||||
* 2.2 has metrics /proc/stat, but wtf is the device mapping?
|
|
||||||
* 2.4 has /proc/partitions w/ the metrics.
|
|
||||||
* 2.6 has /proc/partitions w/o the metrics.
|
|
||||||
* instead the metrics are within the /proc-like /sys filesystem.
|
|
||||||
* also has /proc/diskstats
|
|
||||||
*/
|
|
||||||
switch (sigar->iostat) {
|
|
||||||
case IOSTAT_SYS:
|
|
||||||
if (get_iostat_sys(sigar, dirname, fsusage) == SIGAR_OK) {
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case IOSTAT_DISKSTATS:
|
|
||||||
if (get_iostat_proc_dstat(sigar, dirname, fsusage) == SIGAR_OK) {
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case IOSTAT_PARTITIONS:
|
|
||||||
if (get_iostat_procp(sigar, dirname, fsusage) == SIGAR_OK) {
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
/*
|
|
||||||
* case IOSTAT_SOME_OTHER_WIERD_THING:
|
|
||||||
* break;
|
|
||||||
*/
|
|
||||||
case IOSTAT_NONE:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
return SIGAR_OK;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue