X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fcpu.c;h=28e6233808fa0d60e6c3954926cc38fb5a0a2800;hb=a802557560543782e606fa1d90f1b2d7b9c4ee9e;hp=adafbeac44ca488187c075d854361cf530a5e7ca;hpb=e1d497b742e7a12098c44fc6fd5ffc29df32c4d9;p=collectd.git diff --git a/src/cpu.c b/src/cpu.c index adafbeac..28e62338 100644 --- a/src/cpu.c +++ b/src/cpu.c @@ -1,37 +1,63 @@ -#include "cpu.h" +/** + * collectd - src/cpu.c + * Copyright (C) 2005 Florian octo Forster + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Authors: + * Florian octo Forster + **/ + +#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; @@ -45,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:25:0:U", + "DS:nice:COUNTER:25:0:U", + "DS:syst:COUNTER:25:0:U", + "DS:idle:COUNTER:25:0:U", + "DS:wait:COUNTER:25: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; @@ -92,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; @@ -106,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]; @@ -122,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 @@ -203,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; @@ -220,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) { @@ -228,4 +259,3 @@ void module_register (void) } #undef MODULE_NAME -#endif /* COLLECT_CPU */