aboutsummaryrefslogtreecommitdiffstats
path: root/devel/sigar
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2017-04-21 06:54:35 +0800
committerglebius <glebius@FreeBSD.org>2017-04-21 06:54:35 +0800
commite85df278b2d6c5ee6806faf28e6ab5762d722ee2 (patch)
tree60f963dfab8851aac9775a6d845564b341faae52 /devel/sigar
parent6ffac0147ba5794d37625dbf08dead12032b30a4 (diff)
downloadfreebsd-ports-gnome-e85df278b2d6c5ee6806faf28e6ab5762d722ee2.tar.gz
freebsd-ports-gnome-e85df278b2d6c5ee6806faf28e6ab5762d722ee2.tar.zst
freebsd-ports-gnome-e85df278b2d6c5ee6806faf28e6ab5762d722ee2.zip
Fix build after src r317061. Declare our own vmmeter on all FreeBSD versions.
Diffstat (limited to 'devel/sigar')
-rw-r--r--devel/sigar/files/patch-src_os_darwin_darwin__sigar.c134
1 files changed, 128 insertions, 6 deletions
diff --git a/devel/sigar/files/patch-src_os_darwin_darwin__sigar.c b/devel/sigar/files/patch-src_os_darwin_darwin__sigar.c
index fbc0d20a4ff5..b06bf762e02e 100644
--- a/devel/sigar/files/patch-src_os_darwin_darwin__sigar.c
+++ b/devel/sigar/files/patch-src_os_darwin_darwin__sigar.c
@@ -1,6 +1,110 @@
--- src/os/darwin/darwin_sigar.c.orig 2014-11-17 13:46:20.000000000 -0800
-+++ src/os/darwin/darwin_sigar.c 2017-03-20 23:32:31.935016000 -0700
-@@ -399,9 +399,13 @@
++++ src/os/darwin/darwin_sigar.c 2017-04-20 15:52:24.386676000 -0700
+@@ -123,6 +123,69 @@
+ #endif
+
+ #if defined(SIGAR_FREEBSD5)
++#if __FreeBSD_version >= 1200028
++#define VMMETER_TYPE uint64_t
++#else
++#define VMMETER_TYPE u_int
++#endif
++struct __vmmeter {
++ VMMETER_TYPE v_vm_faults;
++ VMMETER_TYPE v_io_faults;
++ VMMETER_TYPE v_cow_faults;
++ VMMETER_TYPE v_cow_optim;
++ VMMETER_TYPE v_zfod;
++ VMMETER_TYPE v_ozfod;
++ VMMETER_TYPE v_swapin;
++ VMMETER_TYPE v_swapout;
++ VMMETER_TYPE v_swappgsin;
++ VMMETER_TYPE v_swappgsout;
++ VMMETER_TYPE v_vnodein;
++ VMMETER_TYPE v_vnodeout;
++ VMMETER_TYPE v_vnodepgsin;
++ VMMETER_TYPE v_vnodepgsout;
++ VMMETER_TYPE v_intrans;
++ VMMETER_TYPE v_reactivated;
++ VMMETER_TYPE v_pdwakeups;
++ VMMETER_TYPE v_pdpages;
++ VMMETER_TYPE v_pdshortfalls;
++ VMMETER_TYPE v_dfree;
++ VMMETER_TYPE v_pfree;
++ VMMETER_TYPE v_tfree;
++ VMMETER_TYPE v_forks;
++ VMMETER_TYPE v_vforks;
++ VMMETER_TYPE v_rforks;
++ VMMETER_TYPE v_kthreads;
++ VMMETER_TYPE v_forkpages;
++ VMMETER_TYPE v_vforkpages;
++ VMMETER_TYPE v_rforkpages;
++ VMMETER_TYPE v_kthreadpages;
++ VMMETER_TYPE v_swtch;
++ VMMETER_TYPE v_syscall;
++ VMMETER_TYPE v_trap;
++ VMMETER_TYPE v_intr;
++ VMMETER_TYPE v_soft;
++ u_int v_page_size;
++ u_int v_page_count;
++ u_int v_free_reserved;
++ u_int v_free_target;
++ u_int v_free_min;
++ u_int v_free_count;
++ u_int v_wire_count;
++ u_int v_active_count;
++ u_int v_inactive_target;
++ u_int v_inactive_count;
++ u_int v_laundry_count;
++ u_int v_pageout_free_min;
++ u_int v_interrupt_free_min;
++ u_int v_free_severe;
++#if (__FreeBSD_version < 1200016)
++ u_int v_cache_count;
++#endif
++#if (__FreeBSD_version < 1100079)
++ u_int v_cache_min;
++ u_int v_cache_max;
++#endif
++};
+
+ #define KI_FD ki_fd
+ #define KI_PID ki_pid
+@@ -342,24 +405,21 @@
+ }
+ }
+ #elif defined(__FreeBSD__)
+-static int sigar_vmstat(sigar_t *sigar, struct vmmeter *vmstat)
++static int sigar_vmstat(sigar_t *sigar, struct __vmmeter *vmstat)
+ {
+- int status;
+- size_t size = sizeof(unsigned int);
+-
+- status = kread(sigar, vmstat, sizeof(*vmstat),
+- sigar->koffsets[KOFFSET_VMMETER]);
+-
+- if (status == SIGAR_OK) {
+- return SIGAR_OK;
+- }
++ size_t size;
+
+ SIGAR_ZERO(vmstat);
+
+ /* derived from src/usr.bin/vmstat/vmstat.c */
+ /* only collect the ones we actually use */
+-#define GET_VM_STATS(cat, name, used) \
+- if (used) sysctlbyname("vm.stats." #cat "." #name, &vmstat->name, &size, NULL, 0)
++#define GET_VM_STATS(cat, name, used) do { \
++ if (used) { \
++ size = sizeof(vmstat->name); \
++ sysctlbyname("vm.stats." #cat "." #name, &vmstat->name, \
++ &size, NULL, 0); \
++ } \
++} while (0)
+
+ /* sys */
+ GET_VM_STATS(sys, v_swtch, 0);
+@@ -399,9 +459,13 @@
GET_VM_STATS(vm, v_active_count, 0);
GET_VM_STATS(vm, v_inactive_target, 0);
GET_VM_STATS(vm, v_inactive_count, 1);
@@ -14,7 +118,16 @@
GET_VM_STATS(vm, v_pageout_free_min, 0);
GET_VM_STATS(vm, v_interrupt_free_min, 0);
GET_VM_STATS(vm, v_forks, 0);
-@@ -479,7 +483,11 @@
+@@ -440,7 +504,7 @@
+ unsigned long mem_total;
+ #endif
+ #if defined(__FreeBSD__)
+- struct vmmeter vmstat;
++ struct __vmmeter vmstat;
+ #elif defined(__OpenBSD__) || defined(__NetBSD__)
+ struct uvmexp vmstat;
+ #endif
+@@ -479,7 +543,11 @@
kern *= sigar->pagesize;
#elif defined(__FreeBSD__)
if ((status = sigar_vmstat(sigar, &vmstat)) == SIGAR_OK) {
@@ -26,7 +139,16 @@
kern *= sigar->pagesize;
mem->free = vmstat.v_free_count;
mem->free *= sigar->pagesize;
-@@ -3055,8 +3063,13 @@
+@@ -689,7 +757,7 @@
+ swap->page_out = vmstat.pageouts;
+ #elif defined(__FreeBSD__)
+ struct kvm_swap kswap[1];
+- struct vmmeter vmstat;
++ struct __vmmeter vmstat;
+
+ if (getswapinfo_sysctl(kswap, 1) != SIGAR_OK) {
+ if (!sigar->kmem) {
+@@ -3055,8 +3123,13 @@
int type, istcp = 0;
char *buf;
const char *mibvar;
@@ -40,7 +162,7 @@
struct xinpgen *xig, *oxig;
struct xsocket *so;
size_t len;
-@@ -3094,6 +3107,15 @@
+@@ -3094,6 +3167,15 @@
xig->xig_len > sizeof(struct xinpgen);
xig = (struct xinpgen *)((char *)xig + xig->xig_len))
{
@@ -56,7 +178,7 @@
if (istcp) {
struct xtcpcb *cb = (struct xtcpcb *)xig;
tp = &cb->xt_tp;
-@@ -3105,6 +3127,7 @@
+@@ -3105,6 +3187,7 @@
inp = &cb->xi_inp;
so = &cb->xi_socket;
}