diff options
author | Giampaolo Rodola <g.rodola@gmail.com> | 2016-01-08 10:33:05 +0000 |
---|---|---|
committer | Giampaolo Rodola <g.rodola@gmail.com> | 2016-01-08 10:33:05 +0000 |
commit | 333466e49cf92284666f6686e0bbf304ef98e736 (patch) | |
tree | 8d65bd321cc29de9c9cea442a5020a6b180561bc | |
parent | 842719aaba161c73068c26fe198d21bc29b44d28 (diff) | |
download | psutil-333466e49cf92284666f6686e0bbf304ef98e736.tar.gz |
#557 (NetBSD): return actual proc mem info
-rw-r--r-- | psutil/_psbsd.py | 6 | ||||
-rw-r--r-- | psutil/_psutil_bsd.c | 19 |
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 |