summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiampaolo Rodola <g.rodola@gmail.com>2015-11-12 05:42:36 +0100
committerGiampaolo Rodola <g.rodola@gmail.com>2015-11-12 05:42:36 +0100
commit292fd9461747066ef0e07afba07a6af4bc51b387 (patch)
tree32a33b5c965e71403c5775f2b1e0b9a511d8af3b
parente0d6d7865df84dc9a1d123ae452fd311f79b1dde (diff)
downloadpsutil-292fd9461747066ef0e07afba07a6af4bc51b387.tar.gz
move more stuff around
-rw-r--r--psutil/_psutil_bsd.c58
-rw-r--r--psutil/arch/bsd/freebsd.c49
-rw-r--r--psutil/arch/bsd/freebsd.h1
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);