apply freebsd12 compilation patch (#6)
https://svnweb.freebsd.org/ports/head/devel/sigar/files/patch-src_os_darwin_darwin__sigar.c?revision=438996&view=markup
This commit is contained in:
parent
4aeac4dfe8
commit
2bb67fa1bf
|
@ -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 @@ static int sigar_vmstat(sigar_t *sigar, vm_statistics_data_t *vmstat)
|
|||
}
|
||||
}
|
||||
#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,10 +459,12 @@ static int sigar_vmstat(sigar_t *sigar, struct vmmeter *vmstat)
|
|||
GET_VM_STATS(vm, v_active_count, 0);
|
||||
GET_VM_STATS(vm, v_inactive_target, 0);
|
||||
GET_VM_STATS(vm, v_inactive_count, 1);
|
||||
#if (__FreeBSD_version < 1200016 )
|
||||
GET_VM_STATS(vm, v_cache_count, 1);
|
||||
#if (__FreeBSD_version < 1100079)
|
||||
GET_VM_STATS(vm, v_cache_min, 0);
|
||||
GET_VM_STATS(vm, v_cache_max, 0);
|
||||
#endif
|
||||
#if (__FreeBSD_version < 1100079 )
|
||||
GET_VM_STATS(vm, v_cache_min, 0);
|
||||
GET_VM_STATS(vm, v_cache_max, 0);
|
||||
#endif
|
||||
GET_VM_STATS(vm, v_pageout_free_min, 0);
|
||||
GET_VM_STATS(vm, v_interrupt_free_min, 0);
|
||||
|
@ -442,7 +504,7 @@ int sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem)
|
|||
unsigned long mem_total;
|
||||
#endif
|
||||
#if defined(__FreeBSD__)
|
||||
struct vmmeter vmstat;
|
||||
struct __vmmeter vmstat;
|
||||
#elif defined(__OpenBSD__) || defined(__NetBSD__)
|
||||
struct uvmexp vmstat;
|
||||
#endif
|
||||
|
@ -481,7 +543,11 @@ int sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem)
|
|||
kern *= sigar->pagesize;
|
||||
#elif defined(__FreeBSD__)
|
||||
if ((status = sigar_vmstat(sigar, &vmstat)) == SIGAR_OK) {
|
||||
#if (__FreeBSD_version < 1200016 )
|
||||
kern = vmstat.v_cache_count + vmstat.v_inactive_count;
|
||||
#else
|
||||
kern = vmstat.v_inactive_count;
|
||||
#endif
|
||||
kern *= sigar->pagesize;
|
||||
mem->free = vmstat.v_free_count;
|
||||
mem->free *= sigar->pagesize;
|
||||
|
@ -691,7 +757,7 @@ int sigar_swap_get(sigar_t *sigar, sigar_swap_t *swap)
|
|||
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) {
|
||||
|
@ -3057,8 +3123,13 @@ static int net_connection_get(sigar_net_connection_walker_t *walker, int proto)
|
|||
int type, istcp = 0;
|
||||
char *buf;
|
||||
const char *mibvar;
|
||||
#if defined(__FreeBSD__) && (__FreeBSD_version >= 1200026)
|
||||
struct xtcpcb *tp = NULL;
|
||||
struct xinpcb *inp;
|
||||
#else
|
||||
struct tcpcb *tp = NULL;
|
||||
struct inpcb *inp;
|
||||
#endif
|
||||
struct xinpgen *xig, *oxig;
|
||||
struct xsocket *so;
|
||||
size_t len;
|
||||
|
@ -3096,6 +3167,15 @@ static int net_connection_get(sigar_net_connection_walker_t *walker, int proto)
|
|||
xig->xig_len > sizeof(struct xinpgen);
|
||||
xig = (struct xinpgen *)((char *)xig + xig->xig_len))
|
||||
{
|
||||
#if defined(__FreeBSD__) && (__FreeBSD_version >= 1200026)
|
||||
if (istcp) {
|
||||
tp = (struct xtcpcb *)xig;
|
||||
inp = &tp->xt_inp;
|
||||
} else {
|
||||
inp = (struct xinpcb *)xig;
|
||||
}
|
||||
so = &inp->xi_socket;
|
||||
#else
|
||||
if (istcp) {
|
||||
struct xtcpcb *cb = (struct xtcpcb *)xig;
|
||||
tp = &cb->xt_tp;
|
||||
|
@ -3107,6 +3187,7 @@ static int net_connection_get(sigar_net_connection_walker_t *walker, int proto)
|
|||
inp = &cb->xi_inp;
|
||||
so = &cb->xi_socket;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (so->xso_protocol != proto) {
|
||||
continue;
|
||||
|
|
Loading…
Reference in New Issue