summaryrefslogtreecommitdiff
path: root/sysutils/wmmemmon/files/extra-kvm2sysctl.diff
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/wmmemmon/files/extra-kvm2sysctl.diff')
-rw-r--r--sysutils/wmmemmon/files/extra-kvm2sysctl.diff215
1 files changed, 0 insertions, 215 deletions
diff --git a/sysutils/wmmemmon/files/extra-kvm2sysctl.diff b/sysutils/wmmemmon/files/extra-kvm2sysctl.diff
deleted file mode 100644
index 9930143e582d..000000000000
--- a/sysutils/wmmemmon/files/extra-kvm2sysctl.diff
+++ /dev/null
@@ -1,215 +0,0 @@
---- src/mem_freebsd.c.orig 2002-10-14 05:23:26.000000000 -0700
-+++ src/mem_freebsd.c 2008-05-03 13:46:06.000000000 -0700
-@@ -17,38 +17,45 @@
- #include <stdlib.h>
- #include "mem.h"
-
--#include <kvm.h>
-+#include <sys/types.h>
-+#include <sys/sysctl.h>
-+#include <vm/vm_param.h>
- #include <fcntl.h>
--#include <sys/vmmeter.h>
- #include <time.h>
-
--static kvm_t *kvm_data = NULL;
--static int pageshift;
--static struct nlist nlst[] = { {"_cp_time"}, {"_cnt"}, {0} };
-+static int page_size_mib[4] = { -1, -1, -1, -1 };
-+static int page_count_mib[4] = { -1, -1, -1, -1 };
-+static int free_count_mib[4] = { -1, -1, -1, -1 };
-+static int active_count_mib[4] = { -1, -1, -1, -1 };
-+static int inactive_count_mib[4] = { -1, -1, -1, -1 };
-+static int wire_count_mib[4] = { -1, -1, -1, -1 };
-+static int cache_count_mib[4] = { -1, -1, -1, -1 };
-+static int swappgsout_mib[4] = { -1, -1, -1, -1 };
-+static int swappgsin_mib[4] = { -1, -1, -1, -1 };
-+
-+static size_t page_size_len = 4;
-+static size_t page_count_len = 4;
-+static size_t free_count_len = 4;
-+static size_t active_count_len = 4;
-+static size_t inactive_count_len = 4;
-+static size_t wire_count_len = 4;
-+static size_t cache_count_len = 4;
-+static size_t swappgsout_len = 4;
-+static size_t swappgsin_len = 4;
-
- /* initialize function */
- void mem_init(void)
- {
-- int pagesize = getpagesize();
-- pageshift = 0;
-+ init_mib("vm.stats.vm.v_page_size",page_size_mib,&page_size_len);
-+ init_mib("vm.stats.vm.v_page_count",page_count_mib,&page_count_len);
-+ init_mib("vm.stats.vm.v_free_count",free_count_mib,&free_count_len);
-+ init_mib("vm.stats.vm.v_active_count",active_count_mib,&active_count_len);
-+ init_mib("vm.stats.vm.v_inactive_count",inactive_count_mib,&inactive_count_len);
-+ init_mib("vm.stats.vm.v_wire_count",wire_count_mib,&wire_count_len);
-+ init_mib("vm.stats.vm.v_cache_count",cache_count_mib,&cache_count_len);
-+ init_mib("vm.stats.vm.v_swappgsout",swappgsout_mib,&swappgsout_len);
-+ init_mib("vm.stats.vm.v_swappgsin",swappgsin_mib,&swappgsin_len);
-
-- while (pagesize > 1) {
-- pageshift++;
-- pagesize >>= 1;
-- }
--
-- kvm_data = kvm_open(NULL, NULL, NULL, O_RDONLY, "kvm_open");
--
-- if (kvm_data == NULL) {
-- fprintf(stderr, "can't open kernel virtual memory");
-- exit(1);
-- }
-- kvm_nlist(kvm_data, nlst);
--
-- if (nlst[0].n_type == 0 || nlst[1].n_type == 0) {
-- fprintf(stderr, "error extracting symbols");
-- exit(1);
-- }
- /* drop setgid & setuid (the latter should not be there really) */
- seteuid(getuid());
- setegid(getgid());
-@@ -59,26 +66,38 @@
- }
- }
-
--
- /* return mem/swap usage in percent 0 to 100 */
- void mem_getusage(int *per_mem, int *per_swap, const struct mem_options *opts)
- {
-- struct vmmeter vm;
-- int bufspace;
-+ unsigned long int page_size;
-+ unsigned long int page_count;
-+ unsigned long int free_count;
-+ unsigned long int active_count;
-+ unsigned long int inactive_count;
-+ unsigned long int wire_count;
-+ unsigned long int cache_count;
-+ long int swappgsout;
-+ long int swappgsin;
-+
-+ static long int saved_swappgsout = -1;
-+ static long int saved_swappgsin = -1;
-+
- static int swap_firsttime = 1;
-- static int swappgsin = -1;
-- static int swappgsout = -1;
-- static int swapmax = 0, swapused = 0;
-+ static long int swapmax = 0, swapused = 0;
- time_t cur_time;
- static time_t last_time_swap = 0;
- u_int mused;
-
- /* get mem usage */
-- if (kvm_read(kvm_data, nlst[0].n_value, &bufspace, sizeof(bufspace)) !=
-- sizeof(bufspace))
-- exit(1);
-- if (kvm_read(kvm_data, nlst[1].n_value, &vm, sizeof(vm)) != sizeof(vm))
-- exit(1);
-+ if (sysctl(page_size_mib, 4, &page_size, &page_size_len, NULL, 0) == -1) return;
-+ if (sysctl(page_count_mib, 4, &page_count, &page_count_len, NULL, 0) == -1) return;
-+ if (sysctl(free_count_mib, 4, &free_count, &free_count_len, NULL, 0) == -1) return;
-+ if (sysctl(active_count_mib, 4, &active_count, &active_count_len, NULL, 0) == -1) return;
-+ if (sysctl(inactive_count_mib, 4, &inactive_count, &inactive_count_len, NULL, 0) == -1) return;
-+ if (sysctl(wire_count_mib, 4, &wire_count, &wire_count_len, NULL, 0) == -1) return;
-+ if (sysctl(cache_count_mib, 4, &cache_count, &cache_count_len, NULL, 0) == -1) return;
-+ if (sysctl(swappgsout_mib, 4, &swappgsout, &swappgsout_len, NULL, 0) == -1) return;
-+ if (sysctl(swappgsin_mib, 4, &swappgsin, &swappgsin_len, NULL, 0) == -1) return;
-
- /* get swap usage */
- /* only calculate when first time or when changes took place */
-@@ -86,45 +105,69 @@
- /* otherwise it can eat up to 50% of CPU time on heavy swap activity */
- cur_time = time(NULL);
- if (swap_firsttime ||
-- (((vm.v_swappgsin > swappgsin) || (vm.v_swappgsout > swappgsout))
-+ (((swappgsin > saved_swappgsin) || (swappgsout > saved_swappgsout))
- && cur_time > last_time_swap + 1)) {
-
-- struct kvm_swap swap;
-- int n;
--
- swapmax = 0;
- swapused = 0;
-
-- n = kvm_getswapinfo(kvm_data, &swap, 1, 0);
-- if (n >= 0 && swap.ksw_total != 0) {
-- swapmax = swap.ksw_total;
-- swapused = swap.ksw_used;
-- }
-+ getswapinfo(&swapmax,&swapused);
-
- swap_firsttime = 0;
- last_time_swap = cur_time;
- }
-- swappgsin = vm.v_swappgsin;
-- swappgsout = vm.v_swappgsout;
-+ saved_swappgsin = swappgsin;
-+ saved_swappgsout = swappgsout;
-
- #ifdef DEBUG
- printf ("-------------------\n");
-- printf ("total:%10d\n", vm.v_page_count * vm.v_page_size);
-- printf ("free :%10d\n", vm.v_free_count * vm.v_page_size);
-- printf ("act :%10d\n", vm.v_active_count * vm.v_page_size);
-- printf ("inact:%10d\n", vm.v_inactive_count * vm.v_page_size);
-- printf ("wired:%10d\n", vm.v_wire_count * vm.v_page_size);
-- printf ("cache:%10d\n", vm.v_cache_count * vm.v_page_size);
-+ printf ("total:%10d\n", page_count * page_size);
-+ printf ("free :%10d\n", free_count * page_size);
-+ printf ("act :%10d\n", active_count * page_size);
-+ printf ("inact:%10d\n", inactive_count * page_size);
-+ printf ("wired:%10d\n", wire_count * page_size);
-+ printf ("cache:%10d\n", cache_count * page_size);
- printf ("-------------------\n");
- #endif
-
- /* calc mem/swap usage in percent */
-- mused = vm.v_page_count - vm.v_free_count;
-- if (opts->ignore_wired) mused -= vm.v_wire_count;
-- if (opts->ignore_cached) mused -= vm.v_cache_count;
-+ mused = page_count - free_count;
-+ if (opts->ignore_wired) mused -= wire_count;
-+ if (opts->ignore_cached) mused -= cache_count;
-
-- *per_mem = 100 * (double) mused / (double) vm.v_page_count;
-+ *per_mem = 100 * (double) mused / (double) page_count;
- *per_swap = 100 * (double) swapused / (double) swapmax;
-
- if (*per_mem > 97) *per_mem = 100;
- }
-+
-+/* sets up the mib for a sysctl */
-+void init_mib(char *sysctlname, int *mib, size_t *len)
-+{
-+ if (sysctlnametomib(sysctlname,mib,len) == -1) {
-+ fprintf(stderr, "bad sysctl %s\n", sysctlname);
-+ exit(1);
-+ }
-+}
-+
-+/* returns total and used number of swap pages */
-+void getswapinfo (long *swapmax, long *swapused)
-+{
-+ size_t miblen, size;
-+ int mib[16], n;
-+ struct xswdev xsw;
-+
-+ miblen = sizeof mib / sizeof mib[0];
-+ init_mib("vm.swap_info",mib,&miblen);
-+
-+ for (n=0;; n++)
-+ {
-+ mib[miblen] = n;
-+ size = sizeof xsw;
-+ if (sysctl(mib,miblen+1,&xsw,&size,NULL,0) == -1)
-+ break;
-+ *swapmax += (long) xsw.xsw_nblks;
-+ *swapused += (long) xsw.xsw_used;
-+ }
-+}
-+
-
-