X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fzone.c;h=52dd977becb1104b6638c47afa415aed7aa76801;hb=44a0bdd298888209040ee12a0470d9d7e8fabd70;hp=325d556701563910099a7ff662e609c98abb937f;hpb=7768626c4f446baa3ca777459570b851dfd4c6d9;p=collectd.git diff --git a/src/zone.c b/src/zone.c index 325d5567..52dd977b 100644 --- a/src/zone.c +++ b/src/zone.c @@ -42,6 +42,12 @@ typedef struct zone_stats { static long pagesize; +static int zone_init (void) +{ + pagesize = sysconf(_SC_PAGESIZE); + return (0); +} + static int zone_compare(const zoneid_t *a, const zoneid_t *b) { @@ -144,7 +150,6 @@ zone_scandir(DIR *procdir) psinfo_t psinfo; c_avl_tree_t *tree; zone_stats_t *stats; -/* size_t physmem = sysconf(_SC_PHYS_PAGES) * pagesize;*/ if (!(tree=c_avl_create((void *) zone_compare))) { WARNING("zone plugin: Failed to create tree"); @@ -162,8 +167,10 @@ zone_scandir(DIR *procdir) sizeof(psinfo_t)) != 0) continue; stats = zone_find_stats(tree, psinfo.pr_zoneid); - stats->pctcpu += psinfo.pr_pctcpu; - stats->pctmem += psinfo.pr_pctmem; + if( stats ) { + stats->pctcpu += psinfo.pr_pctcpu; + stats->pctmem += psinfo.pr_pctmem; + } } return(tree); } @@ -174,10 +181,9 @@ static int zone_read (void) DIR *procdir; c_avl_tree_t *tree; - pagesize = sysconf(_SC_PAGESIZE); if ((procdir = opendir("/proc")) == NULL) { ERROR("zone plugin: cannot open /proc directory\n"); - exit(1); + return (-1); } tree=zone_scandir(procdir); @@ -188,5 +194,6 @@ static int zone_read (void) void module_register (void) { + plugin_register_init ("zone", zone_init); plugin_register_read ("zone", zone_read); } /* void module_register */