X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fcpu.c;h=639f4ce25be79570d65248833dd4ce61255f6333;hb=ed3b4a8fe6377817e1dadfbc713c4cc5c0bc4444;hp=830f8acec97402e1fb2f3962514e3a5d4d63a984;hpb=7fa270a1fb517c7fbed55d9f5f70bb28516b6229;p=collectd.git diff --git a/src/cpu.c b/src/cpu.c index 830f8ace..639f4ce2 100644 --- a/src/cpu.c +++ b/src/cpu.c @@ -20,40 +20,44 @@ * Florian octo Forster **/ -#include "cpu.h" +#include "collectd.h" +#include "common.h" +#include "plugin.h" -#if COLLECT_CPU #define MODULE_NAME "cpu" #ifdef HAVE_LIBKSTAT -#include +# include #endif /* HAVE_LIBKSTAT */ #ifdef HAVE_SYSCTLBYNAME -#ifdef HAVE_SYS_SYSCTL_H -#include -#endif - -#ifdef HAVE_SYS_DKSTAT_H -#include -#endif - -#if !defined(CP_USER) || !defined(CP_NICE) || !defined(CP_SYS) || !defined(CP_INTR) || !defined(CP_IDLE) || !defined(CPUSTATES) -#define CP_USER 0 -#define CP_NICE 1 -#define CP_SYS 2 -#define CP_INTR 3 -#define CP_IDLE 4 -#define CPUSTATES 5 -#endif +# ifdef HAVE_SYS_SYSCTL_H +# include +# endif + +# ifdef HAVE_SYS_DKSTAT_H +# include +# endif + +# if !defined(CP_USER) || !defined(CP_NICE) || !defined(CP_SYS) || !defined(CP_INTR) || !defined(CP_IDLE) || !defined(CPUSTATES) +# define CP_USER 0 +# define CP_NICE 1 +# define CP_SYS 2 +# define CP_INTR 3 +# define CP_IDLE 4 +# define CPUSTATES 5 +# endif #endif /* HAVE_SYSCTLBYNAME */ -#include "plugin.h" -#include "common.h" +#if defined(KERNEL_LINUX) || defined(HAVE_LIBKSTAT) || defined(HAVE_SYSCTLBYNAME) +# define CPU_HAVE_READ 1 +#else +# define CPU_HAVE_READ 0 +#endif #ifdef HAVE_LIBKSTAT /* colleague tells me that Sun doesn't sell systems with more than 100 or so CPUs.. */ -#define MAX_NUMCPU 256 +# define MAX_NUMCPU 256 extern kstat_ctl_t *kc; static kstat_t *ksp[MAX_NUMCPU]; static int numcpu; @@ -67,18 +71,16 @@ static char *cpu_filename = "cpu-%s.rrd"; static char *ds_def[] = { - "DS:user:COUNTER:25:0:100", - "DS:nice:COUNTER:25:0:100", - "DS:syst:COUNTER:25:0:100", - "DS:idle:COUNTER:25:0:100", - "DS:wait:COUNTER:25:0:100", + "DS:user:COUNTER:"COLLECTD_HEARTBEAT":0:U", + "DS:nice:COUNTER:"COLLECTD_HEARTBEAT":0:U", + "DS:syst:COUNTER:"COLLECTD_HEARTBEAT":0:U", + "DS:idle:COUNTER:"COLLECTD_HEARTBEAT":0:U", + "DS:wait:COUNTER:"COLLECTD_HEARTBEAT":0:U", NULL }; static int ds_num = 5; -extern time_t curtime; - -void cpu_init (void) +static void cpu_init (void) { #ifdef HAVE_LIBKSTAT kstat_t *ksp_chain; @@ -114,7 +116,7 @@ void cpu_init (void) return; } -void cpu_write (char *host, char *inst, char *val) +static void cpu_write (char *host, char *inst, char *val) { char file[512]; int status; @@ -128,8 +130,10 @@ void cpu_write (char *host, char *inst, char *val) rrd_update_file (host, file, val, ds_def, ds_num); } +#if CPU_HAVE_READ #define BUFSIZE 512 -void cpu_submit (int cpu_num, unsigned long long user, unsigned long long nice, unsigned long long syst, +static void cpu_submit (int cpu_num, unsigned long long user, + unsigned long long nice, unsigned long long syst, unsigned long long idle, unsigned long long wait) { char buf[BUFSIZE]; @@ -144,7 +148,7 @@ void cpu_submit (int cpu_num, unsigned long long user, unsigned long long nice, } #undef BUFSIZE -void cpu_read (void) +static void cpu_read (void) { #ifdef KERNEL_LINUX #define BUFSIZE 1024 @@ -225,7 +229,7 @@ void cpu_read (void) } /* #endif defined(HAVE_LIBKSTAT) */ -#elif defined (HAVE_SYSCTLBYNAME) +#elif defined(HAVE_SYSCTLBYNAME) long cpuinfo[CPUSTATES]; size_t cpuinfo_size; @@ -242,7 +246,12 @@ void cpu_read (void) /* FIXME: Instance is always `0' */ cpu_submit (0, cpuinfo[CP_USER], cpuinfo[CP_NICE], cpuinfo[CP_SYS], cpuinfo[CP_IDLE], 0LL); #endif + + return; } +#else +# define cpu_read NULL +#endif /* CPU_HAVE_READ */ void module_register (void) { @@ -250,4 +259,3 @@ void module_register (void) } #undef MODULE_NAME -#endif /* COLLECT_CPU */