Import of pkgsrc-2015Q3

This commit is contained in:
2015-10-03 03:37:01 -07:00
committed by Lionel Sambuc
parent f641581404
commit 9d819b6d54
7578 changed files with 228314 additions and 80018 deletions

View File

@@ -1,103 +1,9 @@
$NetBSD: patch-panel-plugin_devperf.c,v 1.1 2015/04/21 08:56:40 jperkin Exp $
$NetBSD: patch-panel-plugin_devperf.c,v 1.2 2015/06/29 11:16:48 youri Exp $
Add FreeBSD support and fix NetBSD support.
--- panel-plugin/devperf.c.orig 2015-02-09 23:25:33.000000000 +0000
Fix NetBSD support.
--- panel-plugin/devperf.c.orig 2014-09-11 13:45:46.000000000 +0000
+++ panel-plugin/devperf.c
@@ -225,6 +225,93 @@ int main ()
/************************** Linux End ***************/
+#elif defined(__FreeBSD__)
+
+#include <sys/disk.h>
+#include <sys/param.h>
+#include <sys/sysctl.h>
+#include <sys/types.h>
+#include <sys/errno.h>
+#include <sys/resource.h>
+#include <sys/time.h>
+#include <devstat.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <string.h>
+#include <syslog.h>
+#include <stdarg.h>
+
+#define MAXNAMELEN 256
+
+struct statinfo stats;
+struct devinfo dinfo;
+
+int DevPerfInit ()
+{
+ stats.dinfo = &dinfo;
+
+ return (0);
+}
+
+int DevCheckStatAvailability(char const **strptr)
+{
+ return (0);
+}
+
+int DevGetPerfData (const void *p_pvDevice, struct devperf_t *perf)
+{
+ struct timeval tv;
+ struct timespec ts;
+ struct devstat dev;
+ kvm_t *kd = NULL;
+ int i, found = 0;
+ char *check_dev = (char *) p_pvDevice;
+
+ if(devstat_getdevs(kd, &stats) == -1) {
+ syslog(0, "DISKPERF: getdevs fail");
+ }
+
+ for(found = 0, i = 0; i < (stats.dinfo)->numdevs; i++) {
+ char dev_name[MAXNAMELEN];
+ dev = (stats.dinfo)->devices[i];
+ snprintf(dev_name, MAXNAMELEN-1, "%s%d",
+ dev.device_name, dev.unit_number);
+ if ((check_dev != NULL) && (strcmp(check_dev, dev_name) != 0))
+ continue;
+ else {
+ found = 1;
+ break;
+ }
+
+ }
+
+ if(check_dev != NULL && found) {
+ perf->wbytes = dev.bytes[DEVSTAT_WRITE];
+ perf->rbytes = dev.bytes[DEVSTAT_READ];
+ gettimeofday (&tv, 0);
+ perf->timestamp_ns = (uint64_t)1000ull * 1000ull * 1000ull *
+ tv.tv_sec + 1000ull * tv.tv_usec;
+ perf->qlen = dev.start_count - dev.end_count;
+ // I'm not sure about rbusy and wbusy calculation
+ bintime2timespec(&dev.busy_time, &ts);
+ perf->rbusy_ns = (uint64_t) ts.tv_nsec;
+ perf->wbusy_ns = perf->rbusy_ns;
+ }
+
+ return (0);
+}
+
+#if 0 /* Standalone test purpose */
+int main ()
+{
+ struct devperf_t oPerf;
+ DevGetPerfData ((void*)"ada0", &oPerf);
+ printf ("%lu\t%lu\n", oPerf.rbytes, oPerf.wbytes);
+ return (0);
+}
+#endif
+
+
#elif defined(__NetBSD__)
/**************************************************************/
@@ -251,21 +338,39 @@ int DevGetPerfData (const void *p_pvDevi
@@ -335,21 +335,39 @@ int DevGetPerfData (const void *p_pvDevi
const char *device = (const char *) p_pvDevice;
struct timeval tv;
size_t size, i, ndrives;
@@ -137,7 +43,7 @@ Add FreeBSD support and fix NetBSD support.
drive = drives[i];
break;
}
@@ -279,13 +384,18 @@ int DevGetPerfData (const void *p_pvDevi
@@ -363,13 +381,18 @@ int DevGetPerfData (const void *p_pvDevi
gettimeofday (&tv, 0);
perf->timestamp_ns = (uint64_t)1000ull * 1000ull * 1000ull *
tv.tv_sec + 1000ull * tv.tv_usec;
@@ -158,7 +64,7 @@ Add FreeBSD support and fix NetBSD support.
#endif
/*
@@ -293,10 +403,18 @@ int DevGetPerfData (const void *p_pvDevi
@@ -377,10 +400,18 @@ int DevGetPerfData (const void *p_pvDevi
* time separatly.
* -- Benedikt
*/