start freebsd swap.page_{in,out} impl
This commit is contained in:
parent
93f4553c1e
commit
28c04122c7
|
@ -244,7 +244,7 @@ char *sigar_os_error_string(sigar_t *sigar, int err)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef DARWIN
|
||||
#if defined(DARWIN)
|
||||
static int sigar_vmstat(sigar_t *sigar, vm_statistics_data_t *vmstat)
|
||||
{
|
||||
kern_return_t status;
|
||||
|
@ -260,6 +260,17 @@ static int sigar_vmstat(sigar_t *sigar, vm_statistics_data_t *vmstat)
|
|||
return errno;
|
||||
}
|
||||
}
|
||||
#elif defined(__FreeBSD__)
|
||||
static int sigar_vmstat(sigar_t *sigar, struct vmmeter *vmstat)
|
||||
{
|
||||
int status;
|
||||
|
||||
status = kread(sigar, vmstat, sizeof(*vmstat),
|
||||
sigar->koffsets[KOFFSET_VMMETER]);
|
||||
|
||||
/* XXX sysctlbyname("vm.stats.vm.*", ...) */
|
||||
return status;
|
||||
}
|
||||
#endif
|
||||
|
||||
int sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem)
|
||||
|
@ -411,13 +422,13 @@ static int getswapinfo_sysctl(struct kvm_swap *swap_ary,
|
|||
|
||||
int sigar_swap_get(sigar_t *sigar, sigar_swap_t *swap)
|
||||
{
|
||||
int status;
|
||||
#if defined(DARWIN)
|
||||
DIR *dirp;
|
||||
struct dirent *ent;
|
||||
char swapfile[SSTRLEN(VM_DIR) + SSTRLEN("/") + SSTRLEN(SWAPFILE) + 12];
|
||||
struct stat swapstat;
|
||||
struct statfs vmfs;
|
||||
int status;
|
||||
vm_statistics_data_t vmstat;
|
||||
|
||||
swap->used = swap->total = swap->free = 0;
|
||||
|
@ -473,6 +484,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;
|
||||
|
||||
if (getswapinfo_sysctl(kswap, 1) != SIGAR_OK) {
|
||||
if (!sigar->kmem) {
|
||||
|
@ -495,7 +507,13 @@ int sigar_swap_get(sigar_t *sigar, sigar_swap_t *swap)
|
|||
swap->used = kswap[0].ksw_used * sigar->pagesize;
|
||||
swap->free = swap->total - swap->used;
|
||||
|
||||
swap->page_in = swap->page_out = -1;
|
||||
if ((status = sigar_vmstat(sigar, &vmstat)) == SIGAR_OK) {
|
||||
swap->page_in = vmstat.v_swapin + vmstat.v_vnodein;
|
||||
swap->page_out = vmstat.v_swapout + vmstat.v_vnodeout;
|
||||
}
|
||||
else {
|
||||
swap->page_in = swap->page_out = -1;
|
||||
}
|
||||
#else
|
||||
/*XXX OpenBSD*/
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue