diff options
author | Giampaolo Rodola <g.rodola@gmail.com> | 2015-11-12 05:42:36 +0100 |
---|---|---|
committer | Giampaolo Rodola <g.rodola@gmail.com> | 2015-11-12 05:42:36 +0100 |
commit | 292fd9461747066ef0e07afba07a6af4bc51b387 (patch) | |
tree | 32a33b5c965e71403c5775f2b1e0b9a511d8af3b | |
parent | e0d6d7865df84dc9a1d123ae452fd311f79b1dde (diff) | |
download | psutil-292fd9461747066ef0e07afba07a6af4bc51b387.tar.gz |
move more stuff around
-rw-r--r-- | psutil/_psutil_bsd.c | 58 | ||||
-rw-r--r-- | psutil/arch/bsd/freebsd.c | 49 | ||||
-rw-r--r-- | psutil/arch/bsd/freebsd.h | 1 |
3 files changed, 53 insertions, 55 deletions
diff --git a/psutil/_psutil_bsd.c b/psutil/_psutil_bsd.c index 7fa9e049..c4da2865 100644 --- a/psutil/_psutil_bsd.c +++ b/psutil/_psutil_bsd.c @@ -58,13 +58,13 @@ #include "_psutil_bsd.h" #include "_psutil_common.h" -#ifdef __FreeBSD__ +#ifdef __FreeBSD__ #include "arch/bsd/freebsd.h" #elif __OpenBSD__ #include "arch/bsd/openbsd.h" #endif -#ifdef __FreeBSD__ +#ifdef __FreeBSD__ #include <sys/cpuset.h> #include <net/if_media.h> #include <devstat.h> // get io counters @@ -77,7 +77,7 @@ #endif #endif -#ifdef __OpenBSD__ +#ifdef __OpenBSD__ #include <utmp.h> #include <sys/vnode.h> // for VREG #define _KERNEL // for DTYPE_VNODE @@ -464,58 +464,6 @@ psutil_proc_memory_info(PyObject *self, PyObject *args) { } -#ifndef _PATH_DEVNULL -#define _PATH_DEVNULL "/dev/null" -#endif - -#ifdef __FreeBSD__ -/* - * Return swap memory stats (see 'swapinfo' cmdline tool) - */ -static PyObject * -psutil_swap_mem(PyObject *self, PyObject *args) { - kvm_t *kd; - struct kvm_swap kvmsw[1]; - unsigned int swapin, swapout, nodein, nodeout; - size_t size = sizeof(unsigned int); - - kd = kvm_open(NULL, _PATH_DEVNULL, NULL, O_RDONLY, "kvm_open failed"); - if (kd == NULL) { - PyErr_SetString(PyExc_RuntimeError, "kvm_open failed"); - return NULL; - } - - if (kvm_getswapinfo(kd, kvmsw, 1, 0) < 0) { - kvm_close(kd); - PyErr_SetString(PyExc_RuntimeError, "kvm_getswapinfo failed"); - return NULL; - } - - kvm_close(kd); - - if (sysctlbyname("vm.stats.vm.v_swapin", &swapin, &size, NULL, 0) == -1) - goto sbn_error; - if (sysctlbyname("vm.stats.vm.v_swapout", &swapout, &size, NULL, 0) == -1) - goto sbn_error; - if (sysctlbyname("vm.stats.vm.v_vnodein", &nodein, &size, NULL, 0) == -1) - goto sbn_error; - if (sysctlbyname("vm.stats.vm.v_vnodeout", &nodeout, &size, NULL, 0) == -1) - goto sbn_error; - - return Py_BuildValue("(iiiII)", - kvmsw[0].ksw_total, // total - kvmsw[0].ksw_used, // used - kvmsw[0].ksw_total - kvmsw[0].ksw_used, // free - swapin + swapout, // swap in - nodein + nodeout); // swap out - -sbn_error: - PyErr_SetFromErrno(PyExc_OSError); - return NULL; -} -#endif - - /* * Return a Python tuple representing user, kernel and idle CPU times */ diff --git a/psutil/arch/bsd/freebsd.c b/psutil/arch/bsd/freebsd.c index b9d69d74..d40acbc1 100644 --- a/psutil/arch/bsd/freebsd.c +++ b/psutil/arch/bsd/freebsd.c @@ -20,12 +20,17 @@ #include <sys/user.h> #include <sys/proc.h> #include <signal.h> +#include <fcntl.h> #include <sys/vmmeter.h> // needed for vmtotal struct +#include <devstat.h> // for swap mem #include "freebsd.h" #define TV2DOUBLE(t) ((t).tv_sec + (t).tv_usec / 1000000.0) +#ifndef _PATH_DEVNULL +#define _PATH_DEVNULL "/dev/null" +#endif // ============================================================================ @@ -501,3 +506,47 @@ error: PyErr_SetFromErrno(PyExc_OSError); return NULL; } + + +PyObject * +psutil_swap_mem(PyObject *self, PyObject *args) { + // Return swap memory stats (see 'swapinfo' cmdline tool) + kvm_t *kd; + struct kvm_swap kvmsw[1]; + unsigned int swapin, swapout, nodein, nodeout; + size_t size = sizeof(unsigned int); + + kd = kvm_open(NULL, _PATH_DEVNULL, NULL, O_RDONLY, "kvm_open failed"); + if (kd == NULL) { + PyErr_SetString(PyExc_RuntimeError, "kvm_open failed"); + return NULL; + } + + if (kvm_getswapinfo(kd, kvmsw, 1, 0) < 0) { + kvm_close(kd); + PyErr_SetString(PyExc_RuntimeError, "kvm_getswapinfo failed"); + return NULL; + } + + kvm_close(kd); + + if (sysctlbyname("vm.stats.vm.v_swapin", &swapin, &size, NULL, 0) == -1) + goto sbn_error; + if (sysctlbyname("vm.stats.vm.v_swapout", &swapout, &size, NULL, 0) == -1) + goto sbn_error; + if (sysctlbyname("vm.stats.vm.v_vnodein", &nodein, &size, NULL, 0) == -1) + goto sbn_error; + if (sysctlbyname("vm.stats.vm.v_vnodeout", &nodeout, &size, NULL, 0) == -1) + goto sbn_error; + + return Py_BuildValue("(iiiII)", + kvmsw[0].ksw_total, // total + kvmsw[0].ksw_used, // used + kvmsw[0].ksw_total - kvmsw[0].ksw_used, // free + swapin + swapout, // swap in + nodein + nodeout); // swap out + +sbn_error: + PyErr_SetFromErrno(PyExc_OSError); + return NULL; +} diff --git a/psutil/arch/bsd/freebsd.h b/psutil/arch/bsd/freebsd.h index df0600ad..c6cd7595 100644 --- a/psutil/arch/bsd/freebsd.h +++ b/psutil/arch/bsd/freebsd.h @@ -21,3 +21,4 @@ PyObject* psutil_proc_num_threads(PyObject* self, PyObject* args); PyObject* psutil_proc_threads(PyObject* self, PyObject* args); PyObject* psutil_cpu_count_phys(PyObject* self, PyObject* args); PyObject* psutil_virtual_mem(PyObject* self, PyObject* args); +PyObject* psutil_swap_mem(PyObject* self, PyObject* args); |