summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiampaolo Rodola <g.rodola@gmail.com>2016-01-08 10:33:05 +0000
committerGiampaolo Rodola <g.rodola@gmail.com>2016-01-08 10:33:05 +0000
commit333466e49cf92284666f6686e0bbf304ef98e736 (patch)
tree8d65bd321cc29de9c9cea442a5020a6b180561bc
parent842719aaba161c73068c26fe198d21bc29b44d28 (diff)
downloadpsutil-333466e49cf92284666f6686e0bbf304ef98e736.tar.gz
#557 (NetBSD): return actual proc mem info
-rw-r--r--psutil/_psbsd.py6
-rw-r--r--psutil/_psutil_bsd.c19
2 files changed, 15 insertions, 10 deletions
diff --git a/psutil/_psbsd.py b/psutil/_psbsd.py
index 7331b96b..3304cece 100644
--- a/psutil/_psbsd.py
+++ b/psutil/_psbsd.py
@@ -560,7 +560,11 @@ class Process(object):
@wrap_exceptions
def memory_maps(self):
- return cext.proc_memory_maps(self.pid)
+ if FREEBSD:
+ return cext.proc_memory_maps(self.pid)
+ else:
+ # TODO
+ raise NotImplementedError
@wrap_exceptions
def num_fds(self):
diff --git a/psutil/_psutil_bsd.c b/psutil/_psutil_bsd.c
index e4be9c84..b34cab68 100644
--- a/psutil/_psutil_bsd.c
+++ b/psutil/_psutil_bsd.c
@@ -96,6 +96,7 @@
#include <utmpx.h>
#include <sys/vnode.h> // for VREG
#include <sys/sched.h> // for CPUSTATES & CP_*
+ #include <machine/vmparam.h> // for PAGE_SHIFT
#define _KERNEL
#include <uvm/uvm_extern.h>
#undef _KERNEL
@@ -444,8 +445,8 @@ psutil_proc_io_counters(PyObject *self, PyObject *args) {
}
-#ifdef __OpenBSD__
-#define ptoa(x) ((paddr_t)(x) << PAGE_SHIFT)
+#if defined(__OpenBSD__) || defined(__NetBSD__)
+ #define ptoa(x) ((paddr_t)(x) << PAGE_SHIFT)
#endif
/*
@@ -459,6 +460,7 @@ psutil_proc_memory_info(PyObject *self, PyObject *args) {
return NULL;
if (psutil_kinfo_proc(pid, &kp) == -1)
return NULL;
+
return Py_BuildValue(
"(lllll)",
#ifdef __FreeBSD__
@@ -466,19 +468,18 @@ psutil_proc_memory_info(PyObject *self, PyObject *args) {
(long)kp.ki_size, // vms
ptoa(kp.ki_tsize), // text
ptoa(kp.ki_dsize), // data
- ptoa(kp.ki_ssize)); // stack
-#elif defined(__OpenBSD__)
+ ptoa(kp.ki_ssize) // stack
+#else
ptoa(kp.p_vm_rssize), // rss
// vms, this is how ps does it, see:
// http://anoncvs.spacehopper.org/openbsd-src/tree/bin/ps/print.c#n461
ptoa(kp.p_vm_dsize + kp.p_vm_ssize + kp.p_vm_tsize), // vms
ptoa(kp.p_vm_tsize), // text
ptoa(kp.p_vm_dsize), // data
- ptoa(kp.p_vm_ssize)); // stack
-#else
-/* not implemented */
- 0, 0, 0, 0, 0);
+ ptoa(kp.p_vm_ssize) // stack
+
#endif
+ );
}
@@ -936,7 +937,7 @@ PsutilMethods[] = {
"Return process IO counters"},
{"proc_tty_nr", psutil_proc_tty_nr, METH_VARARGS,
"Return process tty (terminal) number"},
-#ifdef __FreeBSD__ || __OpenBSD__
+#if defined(__FreeBSD__) || defined(__OpenBSD__)
{"proc_cwd", psutil_proc_cwd, METH_VARARGS,
"Return process current working directory."},
#endif