summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 8c30c4c)
raw | patch | inline | side by side (parent: 8c30c4c)
author | Oleg King <king2@kaluga.ru> | |
Mon, 5 May 2008 09:58:27 +0000 (11:58 +0200) | ||
committer | Florian Forster <octo@noris.net> | |
Mon, 5 May 2008 09:58:27 +0000 (11:58 +0200) |
configure.in | patch | blob | history | |
src/Makefile.am | patch | blob | history | |
src/disk.c | patch | blob | history |
diff --git a/configure.in b/configure.in
index e834ffd6aab5490e930cc09f4a1c96e0a5bfa4d6..e94730d8311caf922ed31659fa58f851c6e0efa9 100644 (file)
--- a/configure.in
+++ b/configure.in
# libstatgrab
if test "x$with_libstatgrab" = "xyes"
then
+ plugin_disk="yes"
plugin_interface="yes"
plugin_load="yes"
plugin_memory="yes"
diff --git a/src/Makefile.am b/src/Makefile.am
index fe4af774f4a3b9614d6540c1820601936dbab24c..d68d03601060a1c9684e1aa969fe086ff71460f4 100644 (file)
--- a/src/Makefile.am
+++ b/src/Makefile.am
if BUILD_WITH_LIBIOKIT
disk_la_LDFLAGS += -lIOKit
endif
+if BUILD_WITH_LIBSTATGRAB
+disk_la_CFLAGS = $(BUILD_WITH_LIBSTATGRAB_CFLAGS)
+disk_la_LIBADD = $(BUILD_WITH_LIBSTATGRAB_LDFLAGS)
+endif
collectd_LDADD += "-dlopen" disk.la
collectd_DEPENDENCIES += disk.la
endif
diff --git a/src/disk.c b/src/disk.c
index 5491dcbd625f99124a4abf456a22ac5976aaafea..e2ae14e1a4c8c4fd021cd2c7343ef8930a040f34 100644 (file)
--- a/src/disk.c
+++ b/src/disk.c
# define UINT_MAX 4294967295U
#endif
+#if HAVE_STATGRAB_H
+# include <statgrab.h>
+#endif
+
#if HAVE_IOKIT_IOKITLIB_H
static mach_port_t io_master_port = MACH_PORT_NULL;
/* #endif HAVE_IOKIT_IOKITLIB_H */
static int numdisk = 0;
/* #endif HAVE_LIBKSTAT */
+#elif defined(HAVE_LIBSTATGRAB)
+/* #endif HAVE_LIBKSTATGRAB */
+
#else
# error "No applicable input method."
#endif
kio.KIO_ROPS, kio.KIO_WOPS);
}
}
-#endif /* defined(HAVE_LIBKSTAT) */
+/* #endif defined(HAVE_LIBKSTAT) */
+
+#elif defined(HAVE_LIBSTATGRAB)
+ sg_disk_io_stats *ds;
+ int disks, counter;
+ char name[16];
+
+ if ((ds = sg_get_disk_io_stats(&disks)) == NULL)
+ return (0);
+
+ for (counter=0; counter < disks; counter++) {
+ strncpy(name, ds->disk_name, sizeof(name));
+ name[sizeof(name)-1] = '\0'; /* strncpy doesn't terminate longer strings */
+ disk_submit (name, "disk_octets", ds->read_bytes, ds->write_bytes);
+ ds++;
+ }
+#endif /* defined(HAVE_LIBSTATGRAB) */
return (0);
} /* int disk_read */