summaryrefslogtreecommitdiff
path: root/sysutils/xfce4-diskperf-plugin/patches/patch-aa
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/xfce4-diskperf-plugin/patches/patch-aa')
-rw-r--r--sysutils/xfce4-diskperf-plugin/patches/patch-aa84
1 files changed, 84 insertions, 0 deletions
diff --git a/sysutils/xfce4-diskperf-plugin/patches/patch-aa b/sysutils/xfce4-diskperf-plugin/patches/patch-aa
new file mode 100644
index 00000000000..1ad37a8301e
--- /dev/null
+++ b/sysutils/xfce4-diskperf-plugin/patches/patch-aa
@@ -0,0 +1,84 @@
+$NetBSD: patch-aa,v 1.3 2006/07/02 10:13:11 martti Exp $
+
+--- panel-plugin/devperf.c.orig 2003-11-30 12:58:54.000000000 +0200
++++ panel-plugin/devperf.c 2006-07-02 10:05:44.000000000 +0300
+@@ -264,21 +264,39 @@
+ const char *device = (const char *) p_pvDevice;
+ struct timeval tv;
+ size_t size, i, ndrives;
++#ifdef HW_DISKSTATS
+ struct disk_sysctl *drives, drive;
++#else
++ struct io_sysctl *drives, drive;
++#endif
+ int mib[3];
+
+ mib[0] = CTL_HW;
++#ifdef HW_DISKSTATS
+ mib[1] = HW_DISKSTATS;
+ mib[2] = sizeof(struct disk_sysctl);
++#else
++ mib[1] = HW_IOSTATS;
++ mib[2] = sizeof(struct io_sysctl);
++#endif
++
+ if (sysctl(mib, 3, NULL, &size, NULL, 0) == -1)
+ return(-1);
++#ifdef HW_DISKSTATS
+ ndrives = size / sizeof(struct disk_sysctl);
++#else
++ ndrives = size / sizeof(struct io_sysctl);
++#endif
+ drives = malloc(size);
+ if (sysctl(mib, 3, drives, &size, NULL, 0) == -1)
+ return(-1);
+
+ for (i = 0; i < ndrives; i++) {
++#ifdef HW_DISKSTATS
+ if (strcmp(drives[i].dk_name, device) == 0) {
++#else
++ if (strcmp(drives[i].name, device) == 0) {
++#endif
+ drive = drives[i];
+ break;
+ }
+@@ -292,13 +310,18 @@
+ gettimeofday (&tv, 0);
+ perf->timestamp_ns = (uint64_t)1000ull * 1000ull * 1000ull *
+ tv.tv_sec + 1000ull * tv.tv_usec;
+-#if defined(__NetBSD_Version__) && (__NetBSD_Version__ < 106110000)
++#ifdef HW_DISKSTATS
++# if defined(__NetBSD_Version__) && (__NetBSD_Version__ < 106110000)
+ /* NetBSD < 1.6K does not have separate read/write statistics. */
+ perf->rbytes = drive.dk_bytes;
+ perf->wbytes = drive.dk_bytes;
+-#else
++# else
+ perf->rbytes = drive.dk_rbytes;
+ perf->wbytes = drive.dk_wbytes;
++# endif
++#else
++ perf->rbytes = drive.rbytes;
++ perf->wbytes = drive.wbytes;
+ #endif
+
+ /*
+@@ -306,10 +329,18 @@
+ * time separatly.
+ * -- Benedikt
+ */
++#ifdef HW_DISKSTATS
+ perf->qlen = drive.dk_xfer;
+ perf->rbusy_ns = ((uint64_t)1000ull * 1000ull * 1000ull * drive.dk_time_sec
+ + 1000ull * drive.dk_time_usec) / 2ull;
+ perf->wbusy_ns = perf->rbusy_ns;
++#else
++ perf->qlen = drive.xfer;
++ perf->rbusy_ns = ((uint64_t)1000ull * 1000ull * 1000ull * drive.time_sec
++ + 1000ull * drive.time_usec) / 2ull;
++ perf->wbusy_ns = perf->rbusy_ns;
++
++#endif
+
+ return(0);
+ }