| @@ -1,363 +1,377 @@ | | | @@ -1,363 +1,377 @@ |
1 | $NetBSD: patch-psutil___psutil__bsd.c,v 1.1 2015/12/01 14:07:36 ryoon Exp $ | | 1 | $NetBSD: patch-psutil___psutil__bsd.c,v 1.2 2016/01/07 08:14:23 sborrill Exp $ |
2 | | | 2 | |
3 | --- psutil/_psutil_bsd.c.orig 2015-11-25 01:20:34.000000000 +0000 | | 3 | --- psutil/_psutil_bsd.c.orig 2015-11-25 01:20:34.000000000 +0000 |
4 | +++ psutil/_psutil_bsd.c | | 4 | +++ psutil/_psutil_bsd.c 2016-01-06 12:12:07.000000000 +0000 |
5 | @@ -15,6 +15,9 @@ | | 5 | @@ -15,6 +15,9 @@ |
6 | * - psutil.Process.memory_maps() | | 6 | * - psutil.Process.memory_maps() |
7 | */ | | 7 | */ |
8 | | | 8 | |
9 | +#if defined(__NetBSD__) | | 9 | +#if defined(__NetBSD__) |
10 | +#define _KMEMUSER | | 10 | +#define _KMEMUSER |
11 | +#endif | | 11 | +#endif |
12 | | | 12 | |
13 | #include <Python.h> | | 13 | #include <Python.h> |
14 | #include <assert.h> | | 14 | #include <assert.h> |
15 | @@ -42,6 +45,7 @@ | | 15 | @@ -29,7 +32,13 @@ |
| | | 16 | #include <sys/sysctl.h> |
| | | 17 | #include <sys/user.h> |
| | | 18 | #include <sys/proc.h> |
| | | 19 | +#if defined(__NetBSD__) |
| | | 20 | +#define _KERNEL |
| | | 21 | +#include <sys/file.h> |
| | | 22 | +#undef _KERNEL |
| | | 23 | +#else |
| | | 24 | #include <sys/file.h> |
| | | 25 | +#endif |
| | | 26 | #include <sys/socket.h> |
| | | 27 | #include <net/route.h> |
| | | 28 | #include <sys/socketvar.h> // for struct xsocket |
| | | 29 | @@ -42,6 +51,7 @@ |
16 | #include <netinet/in_pcb.h> | | 30 | #include <netinet/in_pcb.h> |
17 | #include <netinet/tcp.h> | | 31 | #include <netinet/tcp.h> |
18 | #include <netinet/tcp_timer.h> | | 32 | #include <netinet/tcp_timer.h> |
19 | +#include <netinet/ip_var.h> | | 33 | +#include <netinet/ip_var.h> |
20 | #include <netinet/tcp_var.h> // for struct xtcpcb | | 34 | #include <netinet/tcp_var.h> // for struct xtcpcb |
21 | #include <netinet/tcp_fsm.h> // for TCP connection states | | 35 | #include <netinet/tcp_fsm.h> // for TCP connection states |
22 | #include <arpa/inet.h> // for inet_ntop() | | 36 | #include <arpa/inet.h> // for inet_ntop() |
23 | @@ -63,6 +67,9 @@ | | 37 | @@ -63,6 +73,9 @@ |
24 | #include "arch/bsd/freebsd_socks.h" | | 38 | #include "arch/bsd/freebsd_socks.h" |
25 | #elif __OpenBSD__ | | 39 | #elif __OpenBSD__ |
26 | #include "arch/bsd/openbsd.h" | | 40 | #include "arch/bsd/openbsd.h" |
27 | +#elif __NetBSD__ | | 41 | +#elif __NetBSD__ |
28 | + #include "arch/bsd/netbsd.h" | | 42 | + #include "arch/bsd/netbsd.h" |
29 | + #include "arch/bsd/netbsd_socks.h" | | 43 | + #include "arch/bsd/netbsd_socks.h" |
30 | #endif | | 44 | #endif |
31 | | | 45 | |
32 | #ifdef __FreeBSD__ | | 46 | #ifdef __FreeBSD__ |
33 | @@ -85,6 +92,15 @@ | | 47 | @@ -85,6 +98,15 @@ |
34 | #include <sys/sched.h> // for CPUSTATES & CP_* | | 48 | #include <sys/sched.h> // for CPUSTATES & CP_* |
35 | #endif | | 49 | #endif |
36 | | | 50 | |
37 | +#if defined(__NetBSD__) | | 51 | +#if defined(__NetBSD__) |
38 | + #include <utmpx.h> | | 52 | + #include <utmpx.h> |
39 | + #include <sys/vnode.h> // for VREG | | 53 | + #include <sys/vnode.h> // for VREG |
40 | + #include <sys/sched.h> // for CPUSTATES & CP_* | | 54 | + #include <sys/sched.h> // for CPUSTATES & CP_* |
41 | +#define _KERNEL | | 55 | +#define _KERNEL |
42 | + #include <uvm/uvm_extern.h> | | 56 | + #include <uvm/uvm_extern.h> |
43 | +#undef _KERNEL | | 57 | +#undef _KERNEL |
44 | +#endif | | 58 | +#endif |
45 | + | | 59 | + |
46 | | | 60 | |
47 | // convert a timeval struct to a double | | 61 | // convert a timeval struct to a double |
48 | #define PSUTIL_TV2DOUBLE(t) ((t).tv_sec + (t).tv_usec / 1000000.0) | | 62 | #define PSUTIL_TV2DOUBLE(t) ((t).tv_sec + (t).tv_usec / 1000000.0) |
49 | @@ -95,7 +111,7 @@ | | 63 | @@ -95,7 +117,7 @@ |
50 | (uint32_t) (bt.frac >> 32) ) >> 32 ) / 1000000) | | 64 | (uint32_t) (bt.frac >> 32) ) >> 32 ) / 1000000) |
51 | #endif | | 65 | #endif |
52 | | | 66 | |
53 | -#ifdef __OpenBSD__ | | 67 | -#ifdef __OpenBSD__ |
54 | +#if defined(__OpenBSD__) || defined (__NetBSD__) | | 68 | +#if defined(__OpenBSD__) || defined (__NetBSD__) |
55 | #define PSUTIL_KPT2DOUBLE(t) (t ## _sec + t ## _usec / 1000000.0) | | 69 | #define PSUTIL_KPT2DOUBLE(t) (t ## _sec + t ## _usec / 1000000.0) |
56 | #endif | | 70 | #endif |
57 | | | 71 | |
58 | @@ -125,7 +141,7 @@ psutil_pids(PyObject *self, PyObject *ar | | 72 | @@ -125,7 +147,7 @@ |
59 | for (idx = 0; idx < num_processes; idx++) { | | 73 | for (idx = 0; idx < num_processes; idx++) { |
60 | #ifdef __FreeBSD__ | | 74 | #ifdef __FreeBSD__ |
61 | py_pid = Py_BuildValue("i", proclist->ki_pid); | | 75 | py_pid = Py_BuildValue("i", proclist->ki_pid); |
62 | -#elif __OpenBSD__ | | 76 | -#elif __OpenBSD__ |
63 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) | | 77 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) |
64 | py_pid = Py_BuildValue("i", proclist->p_pid); | | 78 | py_pid = Py_BuildValue("i", proclist->p_pid); |
65 | #endif | | 79 | #endif |
66 | if (!py_pid) | | 80 | if (!py_pid) |
67 | @@ -174,14 +190,14 @@ psutil_boot_time(PyObject *self, PyObjec | | 81 | @@ -174,14 +196,14 @@ |
68 | static PyObject * | | 82 | static PyObject * |
69 | psutil_proc_name(PyObject *self, PyObject *args) { | | 83 | psutil_proc_name(PyObject *self, PyObject *args) { |
70 | long pid; | | 84 | long pid; |
71 | - struct kinfo_proc kp; | | 85 | - struct kinfo_proc kp; |
72 | + kinfo_proc kp; | | 86 | + kinfo_proc kp; |
73 | if (! PyArg_ParseTuple(args, "l", &pid)) | | 87 | if (! PyArg_ParseTuple(args, "l", &pid)) |
74 | return NULL; | | 88 | return NULL; |
75 | if (psutil_kinfo_proc(pid, &kp) == -1) | | 89 | if (psutil_kinfo_proc(pid, &kp) == -1) |
76 | return NULL; | | 90 | return NULL; |
77 | #ifdef __FreeBSD__ | | 91 | #ifdef __FreeBSD__ |
78 | return Py_BuildValue("s", kp.ki_comm); | | 92 | return Py_BuildValue("s", kp.ki_comm); |
79 | -#elif __OpenBSD__ | | 93 | -#elif __OpenBSD__ |
80 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) | | 94 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) |
81 | return Py_BuildValue("s", kp.p_comm); | | 95 | return Py_BuildValue("s", kp.p_comm); |
82 | #endif | | 96 | #endif |
83 | } | | 97 | } |
84 | @@ -213,14 +229,14 @@ psutil_proc_cmdline(PyObject *self, PyOb | | 98 | @@ -213,14 +235,14 @@ |
85 | static PyObject * | | 99 | static PyObject * |
86 | psutil_proc_ppid(PyObject *self, PyObject *args) { | | 100 | psutil_proc_ppid(PyObject *self, PyObject *args) { |
87 | long pid; | | 101 | long pid; |
88 | - struct kinfo_proc kp; | | 102 | - struct kinfo_proc kp; |
89 | + kinfo_proc kp; | | 103 | + kinfo_proc kp; |
90 | if (! PyArg_ParseTuple(args, "l", &pid)) | | 104 | if (! PyArg_ParseTuple(args, "l", &pid)) |
91 | return NULL; | | 105 | return NULL; |
92 | if (psutil_kinfo_proc(pid, &kp) == -1) | | 106 | if (psutil_kinfo_proc(pid, &kp) == -1) |
93 | return NULL; | | 107 | return NULL; |
94 | #ifdef __FreeBSD__ | | 108 | #ifdef __FreeBSD__ |
95 | return Py_BuildValue("l", (long)kp.ki_ppid); | | 109 | return Py_BuildValue("l", (long)kp.ki_ppid); |
96 | -#elif __OpenBSD__ | | 110 | -#elif __OpenBSD__ |
97 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) | | 111 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) |
98 | return Py_BuildValue("l", (long)kp.p_ppid); | | 112 | return Py_BuildValue("l", (long)kp.p_ppid); |
99 | #endif | | 113 | #endif |
100 | } | | 114 | } |
101 | @@ -232,14 +248,14 @@ psutil_proc_ppid(PyObject *self, PyObjec | | 115 | @@ -232,14 +254,14 @@ |
102 | static PyObject * | | 116 | static PyObject * |
103 | psutil_proc_status(PyObject *self, PyObject *args) { | | 117 | psutil_proc_status(PyObject *self, PyObject *args) { |
104 | long pid; | | 118 | long pid; |
105 | - struct kinfo_proc kp; | | 119 | - struct kinfo_proc kp; |
106 | + kinfo_proc kp; | | 120 | + kinfo_proc kp; |
107 | if (! PyArg_ParseTuple(args, "l", &pid)) | | 121 | if (! PyArg_ParseTuple(args, "l", &pid)) |
108 | return NULL; | | 122 | return NULL; |
109 | if (psutil_kinfo_proc(pid, &kp) == -1) | | 123 | if (psutil_kinfo_proc(pid, &kp) == -1) |
110 | return NULL; | | 124 | return NULL; |
111 | #ifdef __FreeBSD__ | | 125 | #ifdef __FreeBSD__ |
112 | return Py_BuildValue("i", (int)kp.ki_stat); | | 126 | return Py_BuildValue("i", (int)kp.ki_stat); |
113 | -#elif __OpenBSD__ | | 127 | -#elif __OpenBSD__ |
114 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) | | 128 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) |
115 | return Py_BuildValue("i", (int)kp.p_stat); | | 129 | return Py_BuildValue("i", (int)kp.p_stat); |
116 | #endif | | 130 | #endif |
117 | } | | 131 | } |
118 | @@ -252,7 +268,7 @@ psutil_proc_status(PyObject *self, PyObj | | 132 | @@ -252,7 +274,7 @@ |
119 | static PyObject * | | 133 | static PyObject * |
120 | psutil_proc_uids(PyObject *self, PyObject *args) { | | 134 | psutil_proc_uids(PyObject *self, PyObject *args) { |
121 | long pid; | | 135 | long pid; |
122 | - struct kinfo_proc kp; | | 136 | - struct kinfo_proc kp; |
123 | + kinfo_proc kp; | | 137 | + kinfo_proc kp; |
124 | if (! PyArg_ParseTuple(args, "l", &pid)) | | 138 | if (! PyArg_ParseTuple(args, "l", &pid)) |
125 | return NULL; | | 139 | return NULL; |
126 | if (psutil_kinfo_proc(pid, &kp) == -1) | | 140 | if (psutil_kinfo_proc(pid, &kp) == -1) |
127 | @@ -262,7 +278,7 @@ psutil_proc_uids(PyObject *self, PyObjec | | 141 | @@ -262,7 +284,7 @@ |
128 | (long)kp.ki_ruid, | | 142 | (long)kp.ki_ruid, |
129 | (long)kp.ki_uid, | | 143 | (long)kp.ki_uid, |
130 | (long)kp.ki_svuid); | | 144 | (long)kp.ki_svuid); |
131 | -#elif __OpenBSD__ | | 145 | -#elif __OpenBSD__ |
132 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) | | 146 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) |
133 | (long)kp.p_ruid, | | 147 | (long)kp.p_ruid, |
134 | (long)kp.p_uid, | | 148 | (long)kp.p_uid, |
135 | (long)kp.p_svuid); | | 149 | (long)kp.p_svuid); |
136 | @@ -277,7 +293,7 @@ psutil_proc_uids(PyObject *self, PyObjec | | 150 | @@ -277,7 +299,7 @@ |
137 | static PyObject * | | 151 | static PyObject * |
138 | psutil_proc_gids(PyObject *self, PyObject *args) { | | 152 | psutil_proc_gids(PyObject *self, PyObject *args) { |
139 | long pid; | | 153 | long pid; |
140 | - struct kinfo_proc kp; | | 154 | - struct kinfo_proc kp; |
141 | + kinfo_proc kp; | | 155 | + kinfo_proc kp; |
142 | if (! PyArg_ParseTuple(args, "l", &pid)) | | 156 | if (! PyArg_ParseTuple(args, "l", &pid)) |
143 | return NULL; | | 157 | return NULL; |
144 | if (psutil_kinfo_proc(pid, &kp) == -1) | | 158 | if (psutil_kinfo_proc(pid, &kp) == -1) |
145 | @@ -287,7 +303,7 @@ psutil_proc_gids(PyObject *self, PyObjec | | 159 | @@ -287,7 +309,7 @@ |
146 | (long)kp.ki_rgid, | | 160 | (long)kp.ki_rgid, |
147 | (long)kp.ki_groups[0], | | 161 | (long)kp.ki_groups[0], |
148 | (long)kp.ki_svuid); | | 162 | (long)kp.ki_svuid); |
149 | -#elif __OpenBSD__ | | 163 | -#elif __OpenBSD__ |
150 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) | | 164 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) |
151 | (long)kp.p_rgid, | | 165 | (long)kp.p_rgid, |
152 | (long)kp.p_groups[0], | | 166 | (long)kp.p_groups[0], |
153 | (long)kp.p_svuid); | | 167 | (long)kp.p_svuid); |
154 | @@ -302,14 +318,14 @@ psutil_proc_gids(PyObject *self, PyObjec | | 168 | @@ -302,14 +324,14 @@ |
155 | static PyObject * | | 169 | static PyObject * |
156 | psutil_proc_tty_nr(PyObject *self, PyObject *args) { | | 170 | psutil_proc_tty_nr(PyObject *self, PyObject *args) { |
157 | long pid; | | 171 | long pid; |
158 | - struct kinfo_proc kp; | | 172 | - struct kinfo_proc kp; |
159 | + kinfo_proc kp; | | 173 | + kinfo_proc kp; |
160 | if (! PyArg_ParseTuple(args, "l", &pid)) | | 174 | if (! PyArg_ParseTuple(args, "l", &pid)) |
161 | return NULL; | | 175 | return NULL; |
162 | if (psutil_kinfo_proc(pid, &kp) == -1) | | 176 | if (psutil_kinfo_proc(pid, &kp) == -1) |
163 | return NULL; | | 177 | return NULL; |
164 | #ifdef __FreeBSD__ | | 178 | #ifdef __FreeBSD__ |
165 | return Py_BuildValue("i", kp.ki_tdev); | | 179 | return Py_BuildValue("i", kp.ki_tdev); |
166 | -#elif __OpenBSD__ | | 180 | -#elif __OpenBSD__ |
167 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) | | 181 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) |
168 | return Py_BuildValue("i", kp.p_tdev); | | 182 | return Py_BuildValue("i", kp.p_tdev); |
169 | #endif | | 183 | #endif |
170 | } | | 184 | } |
171 | @@ -321,7 +337,7 @@ psutil_proc_tty_nr(PyObject *self, PyObj | | 185 | @@ -321,7 +343,7 @@ |
172 | static PyObject * | | 186 | static PyObject * |
173 | psutil_proc_num_ctx_switches(PyObject *self, PyObject *args) { | | 187 | psutil_proc_num_ctx_switches(PyObject *self, PyObject *args) { |
174 | long pid; | | 188 | long pid; |
175 | - struct kinfo_proc kp; | | 189 | - struct kinfo_proc kp; |
176 | + kinfo_proc kp; | | 190 | + kinfo_proc kp; |
177 | if (! PyArg_ParseTuple(args, "l", &pid)) | | 191 | if (! PyArg_ParseTuple(args, "l", &pid)) |
178 | return NULL; | | 192 | return NULL; |
179 | if (psutil_kinfo_proc(pid, &kp) == -1) | | 193 | if (psutil_kinfo_proc(pid, &kp) == -1) |
180 | @@ -330,7 +346,7 @@ psutil_proc_num_ctx_switches(PyObject *s | | 194 | @@ -330,7 +352,7 @@ |
181 | #ifdef __FreeBSD__ | | 195 | #ifdef __FreeBSD__ |
182 | kp.ki_rusage.ru_nvcsw, | | 196 | kp.ki_rusage.ru_nvcsw, |
183 | kp.ki_rusage.ru_nivcsw); | | 197 | kp.ki_rusage.ru_nivcsw); |
184 | -#elif __OpenBSD__ | | 198 | -#elif __OpenBSD__ |
185 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) | | 199 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) |
186 | kp.p_uru_nvcsw, | | 200 | kp.p_uru_nvcsw, |
187 | kp.p_uru_nivcsw); | | 201 | kp.p_uru_nivcsw); |
188 | #endif | | 202 | #endif |
189 | @@ -344,7 +360,7 @@ static PyObject * | | 203 | @@ -344,7 +366,7 @@ |
190 | psutil_proc_cpu_times(PyObject *self, PyObject *args) { | | 204 | psutil_proc_cpu_times(PyObject *self, PyObject *args) { |
191 | long pid; | | 205 | long pid; |
192 | double user_t, sys_t; | | 206 | double user_t, sys_t; |
193 | - struct kinfo_proc kp; | | 207 | - struct kinfo_proc kp; |
194 | + kinfo_proc kp; | | 208 | + kinfo_proc kp; |
195 | if (! PyArg_ParseTuple(args, "l", &pid)) | | 209 | if (! PyArg_ParseTuple(args, "l", &pid)) |
196 | return NULL; | | 210 | return NULL; |
197 | if (psutil_kinfo_proc(pid, &kp) == -1) | | 211 | if (psutil_kinfo_proc(pid, &kp) == -1) |
198 | @@ -353,7 +369,7 @@ psutil_proc_cpu_times(PyObject *self, Py | | 212 | @@ -353,7 +375,7 @@ |
199 | #ifdef __FreeBSD__ | | 213 | #ifdef __FreeBSD__ |
200 | user_t = PSUTIL_TV2DOUBLE(kp.ki_rusage.ru_utime); | | 214 | user_t = PSUTIL_TV2DOUBLE(kp.ki_rusage.ru_utime); |
201 | sys_t = PSUTIL_TV2DOUBLE(kp.ki_rusage.ru_stime); | | 215 | sys_t = PSUTIL_TV2DOUBLE(kp.ki_rusage.ru_stime); |
202 | -#elif __OpenBSD__ | | 216 | -#elif __OpenBSD__ |
203 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) | | 217 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) |
204 | user_t = PSUTIL_KPT2DOUBLE(kp.p_uutime); | | 218 | user_t = PSUTIL_KPT2DOUBLE(kp.p_uutime); |
205 | sys_t = PSUTIL_KPT2DOUBLE(kp.p_ustime); | | 219 | sys_t = PSUTIL_KPT2DOUBLE(kp.p_ustime); |
206 | #endif | | 220 | #endif |
207 | @@ -389,14 +405,14 @@ psutil_cpu_count_logical(PyObject *self, | | 221 | @@ -389,14 +411,14 @@ |
208 | static PyObject * | | 222 | static PyObject * |
209 | psutil_proc_create_time(PyObject *self, PyObject *args) { | | 223 | psutil_proc_create_time(PyObject *self, PyObject *args) { |
210 | long pid; | | 224 | long pid; |
211 | - struct kinfo_proc kp; | | 225 | - struct kinfo_proc kp; |
212 | + kinfo_proc kp; | | 226 | + kinfo_proc kp; |
213 | if (! PyArg_ParseTuple(args, "l", &pid)) | | 227 | if (! PyArg_ParseTuple(args, "l", &pid)) |
214 | return NULL; | | 228 | return NULL; |
215 | if (psutil_kinfo_proc(pid, &kp) == -1) | | 229 | if (psutil_kinfo_proc(pid, &kp) == -1) |
216 | return NULL; | | 230 | return NULL; |
217 | #ifdef __FreeBSD__ | | 231 | #ifdef __FreeBSD__ |
218 | return Py_BuildValue("d", PSUTIL_TV2DOUBLE(kp.ki_start)); | | 232 | return Py_BuildValue("d", PSUTIL_TV2DOUBLE(kp.ki_start)); |
219 | -#elif __OpenBSD__ | | 233 | -#elif __OpenBSD__ |
220 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) | | 234 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) |
221 | return Py_BuildValue("d", PSUTIL_KPT2DOUBLE(kp.p_ustart)); | | 235 | return Py_BuildValue("d", PSUTIL_KPT2DOUBLE(kp.p_ustart)); |
222 | #endif | | 236 | #endif |
223 | } | | 237 | } |
224 | @@ -409,7 +425,7 @@ psutil_proc_create_time(PyObject *self, | | 238 | @@ -409,7 +431,7 @@ |
225 | static PyObject * | | 239 | static PyObject * |
226 | psutil_proc_io_counters(PyObject *self, PyObject *args) { | | 240 | psutil_proc_io_counters(PyObject *self, PyObject *args) { |
227 | long pid; | | 241 | long pid; |
228 | - struct kinfo_proc kp; | | 242 | - struct kinfo_proc kp; |
229 | + kinfo_proc kp; | | 243 | + kinfo_proc kp; |
230 | if (! PyArg_ParseTuple(args, "l", &pid)) | | 244 | if (! PyArg_ParseTuple(args, "l", &pid)) |
231 | return NULL; | | 245 | return NULL; |
232 | if (psutil_kinfo_proc(pid, &kp) == -1) | | 246 | if (psutil_kinfo_proc(pid, &kp) == -1) |
233 | @@ -419,7 +435,7 @@ psutil_proc_io_counters(PyObject *self, | | 247 | @@ -419,7 +441,7 @@ |
234 | #ifdef __FreeBSD__ | | 248 | #ifdef __FreeBSD__ |
235 | kp.ki_rusage.ru_inblock, | | 249 | kp.ki_rusage.ru_inblock, |
236 | kp.ki_rusage.ru_oublock, | | 250 | kp.ki_rusage.ru_oublock, |
237 | -#elif __OpenBSD__ | | 251 | -#elif __OpenBSD__ |
238 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) | | 252 | +#elif defined(__OpenBSD__) || defined(__NetBSD__) |
239 | kp.p_uru_inblock, | | 253 | kp.p_uru_inblock, |
240 | kp.p_uru_oublock, | | 254 | kp.p_uru_oublock, |
241 | #endif | | 255 | #endif |
242 | @@ -438,7 +454,7 @@ psutil_proc_io_counters(PyObject *self, | | 256 | @@ -438,7 +460,7 @@ |
243 | static PyObject * | | 257 | static PyObject * |
244 | psutil_proc_memory_info(PyObject *self, PyObject *args) { | | 258 | psutil_proc_memory_info(PyObject *self, PyObject *args) { |
245 | long pid; | | 259 | long pid; |
246 | - struct kinfo_proc kp; | | 260 | - struct kinfo_proc kp; |
247 | + kinfo_proc kp; | | 261 | + kinfo_proc kp; |
248 | if (! PyArg_ParseTuple(args, "l", &pid)) | | 262 | if (! PyArg_ParseTuple(args, "l", &pid)) |
249 | return NULL; | | 263 | return NULL; |
250 | if (psutil_kinfo_proc(pid, &kp) == -1) | | 264 | if (psutil_kinfo_proc(pid, &kp) == -1) |
251 | @@ -451,7 +467,7 @@ psutil_proc_memory_info(PyObject *self, | | 265 | @@ -451,7 +473,7 @@ |
252 | ptoa(kp.ki_tsize), // text | | 266 | ptoa(kp.ki_tsize), // text |
253 | ptoa(kp.ki_dsize), // data | | 267 | ptoa(kp.ki_dsize), // data |
254 | ptoa(kp.ki_ssize)); // stack | | 268 | ptoa(kp.ki_ssize)); // stack |
255 | -#elif __OpenBSD__ | | 269 | -#elif __OpenBSD__ |
256 | +#elif defined(__OpenBSD__) | | 270 | +#elif defined(__OpenBSD__) |
257 | ptoa(kp.p_vm_rssize), // rss | | 271 | ptoa(kp.p_vm_rssize), // rss |
258 | // vms, this is how ps does it, see: | | 272 | // vms, this is how ps does it, see: |
259 | // http://anoncvs.spacehopper.org/openbsd-src/tree/bin/ps/print.c#n461 | | 273 | // http://anoncvs.spacehopper.org/openbsd-src/tree/bin/ps/print.c#n461 |
260 | @@ -459,6 +475,9 @@ psutil_proc_memory_info(PyObject *self, | | 274 | @@ -459,6 +481,9 @@ |
261 | ptoa(kp.p_vm_tsize), // text | | 275 | ptoa(kp.p_vm_tsize), // text |
262 | ptoa(kp.p_vm_dsize), // data | | 276 | ptoa(kp.p_vm_dsize), // data |
263 | ptoa(kp.p_vm_ssize)); // stack | | 277 | ptoa(kp.p_vm_ssize)); // stack |
264 | +#else | | 278 | +#else |
265 | +/* not implemented */ | | 279 | +/* not implemented */ |
266 | + 0, 0, 0, 0, 0); | | 280 | + 0, 0, 0, 0, 0); |
267 | #endif | | 281 | #endif |
268 | } | | 282 | } |
269 | | | 283 | |
270 | @@ -472,7 +491,7 @@ psutil_cpu_times(PyObject *self, PyObjec | | 284 | @@ -472,7 +497,7 @@ |
271 | size_t size = sizeof(cpu_time); | | 285 | size_t size = sizeof(cpu_time); |
272 | int ret; | | 286 | int ret; |
273 | | | 287 | |
274 | -#ifdef __FreeBSD__ | | 288 | -#ifdef __FreeBSD__ |
275 | +#if defined(__FreeBSD__) || defined(__NetBSD__) | | 289 | +#if defined(__FreeBSD__) || defined(__NetBSD__) |
276 | ret = sysctlbyname("kern.cp_time", &cpu_time, &size, NULL, 0); | | 290 | ret = sysctlbyname("kern.cp_time", &cpu_time, &size, NULL, 0); |
277 | #elif __OpenBSD__ | | 291 | #elif __OpenBSD__ |
278 | int mib[] = {CTL_KERN, KERN_CPTIME}; | | 292 | int mib[] = {CTL_KERN, KERN_CPTIME}; |
279 | @@ -499,14 +518,14 @@ psutil_cpu_times(PyObject *self, PyObjec | | 293 | @@ -499,14 +524,14 @@ |
280 | * utility has the same problem see: | | 294 | * utility has the same problem see: |
281 | * https://github.com/giampaolo/psutil/issues/595 | | 295 | * https://github.com/giampaolo/psutil/issues/595 |
282 | */ | | 296 | */ |
283 | -#if defined(__FreeBSD_version) && __FreeBSD_version >= 800000 || __OpenBSD__ | | 297 | -#if defined(__FreeBSD_version) && __FreeBSD_version >= 800000 || __OpenBSD__ |
284 | +#if (defined(__FreeBSD_version) && __FreeBSD_version >= 800000) || __OpenBSD__ || defined(__NetBSD__) | | 298 | +#if (defined(__FreeBSD_version) && __FreeBSD_version >= 800000) || __OpenBSD__ || defined(__NetBSD__) |
285 | static PyObject * | | 299 | static PyObject * |
286 | psutil_proc_open_files(PyObject *self, PyObject *args) { | | 300 | psutil_proc_open_files(PyObject *self, PyObject *args) { |
287 | long pid; | | 301 | long pid; |
288 | int i, cnt; | | 302 | int i, cnt; |
289 | struct kinfo_file *freep = NULL; | | 303 | struct kinfo_file *freep = NULL; |
290 | struct kinfo_file *kif; | | 304 | struct kinfo_file *kif; |
291 | - struct kinfo_proc kipp; | | 305 | - struct kinfo_proc kipp; |
292 | + kinfo_proc kipp; | | 306 | + kinfo_proc kipp; |
293 | PyObject *py_retlist = PyList_New(0); | | 307 | PyObject *py_retlist = PyList_New(0); |
294 | PyObject *py_tuple = NULL; | | 308 | PyObject *py_tuple = NULL; |
295 | | | 309 | |
296 | @@ -530,11 +549,16 @@ psutil_proc_open_files(PyObject *self, P | | 310 | @@ -530,11 +555,16 @@ |
297 | (kif->kf_vnode_type == KF_VTYPE_VREG)) | | 311 | (kif->kf_vnode_type == KF_VTYPE_VREG)) |
298 | { | | 312 | { |
299 | py_tuple = Py_BuildValue("(si)", kif->kf_path, kif->kf_fd); | | 313 | py_tuple = Py_BuildValue("(si)", kif->kf_path, kif->kf_fd); |
300 | -#else | | 314 | -#else |
301 | +#elif defined(__OpenBSD__) | | 315 | +#elif defined(__OpenBSD__) |
302 | if ((kif->f_type == DTYPE_VNODE) && | | 316 | if ((kif->f_type == DTYPE_VNODE) && |
303 | (kif->v_type == VREG)) | | 317 | (kif->v_type == VREG)) |
304 | { | | 318 | { |
305 | py_tuple = Py_BuildValue("(si)", "", kif->fd_fd); | | 319 | py_tuple = Py_BuildValue("(si)", "", kif->fd_fd); |
306 | +#elif defined(__NetBSD__) | | 320 | +#elif defined(__NetBSD__) |
307 | + if ((kif->ki_ftype == DTYPE_VNODE) && | | 321 | + if ((kif->ki_ftype == DTYPE_VNODE) && |
308 | + (kif->ki_vtype == VREG)) | | 322 | + (kif->ki_vtype == VREG)) |
309 | + { | | 323 | + { |
310 | + py_tuple = Py_BuildValue("(si)", "", kif->ki_fd); | | 324 | + py_tuple = Py_BuildValue("(si)", "", kif->ki_fd); |
311 | #endif | | 325 | #endif |
312 | if (py_tuple == NULL) | | 326 | if (py_tuple == NULL) |
313 | goto error; | | 327 | goto error; |
314 | @@ -567,7 +591,11 @@ psutil_disk_partitions(PyObject *self, P | | 328 | @@ -567,7 +597,11 @@ |
315 | long len; | | 329 | long len; |
316 | uint64_t flags; | | 330 | uint64_t flags; |
317 | char opts[200]; | | 331 | char opts[200]; |
318 | +#if defined(__NetBSD__) | | 332 | +#if defined(__NetBSD__) |
319 | + struct statvfs *fs = NULL; | | 333 | + struct statvfs *fs = NULL; |
320 | +#else | | 334 | +#else |
321 | struct statfs *fs = NULL; | | 335 | struct statfs *fs = NULL; |
322 | +#endif | | 336 | +#endif |
323 | PyObject *py_retlist = PyList_New(0); | | 337 | PyObject *py_retlist = PyList_New(0); |
324 | PyObject *py_tuple = NULL; | | 338 | PyObject *py_tuple = NULL; |
325 | | | 339 | |
326 | @@ -576,7 +604,11 @@ psutil_disk_partitions(PyObject *self, P | | 340 | @@ -576,7 +610,11 @@ |
327 | | | 341 | |
328 | // get the number of mount points | | 342 | // get the number of mount points |
329 | Py_BEGIN_ALLOW_THREADS | | 343 | Py_BEGIN_ALLOW_THREADS |
330 | +#if defined(__NetBSD__) | | 344 | +#if defined(__NetBSD__) |
331 | + num = getvfsstat(NULL, 0, MNT_NOWAIT); | | 345 | + num = getvfsstat(NULL, 0, MNT_NOWAIT); |
332 | +#else | | 346 | +#else |
333 | num = getfsstat(NULL, 0, MNT_NOWAIT); | | 347 | num = getfsstat(NULL, 0, MNT_NOWAIT); |
334 | +#endif | | 348 | +#endif |
335 | Py_END_ALLOW_THREADS | | 349 | Py_END_ALLOW_THREADS |
336 | if (num == -1) { | | 350 | if (num == -1) { |
337 | PyErr_SetFromErrno(PyExc_OSError); | | 351 | PyErr_SetFromErrno(PyExc_OSError); |
338 | @@ -591,7 +623,11 @@ psutil_disk_partitions(PyObject *self, P | | 352 | @@ -591,7 +629,11 @@ |
339 | } | | 353 | } |
340 | | | 354 | |
341 | Py_BEGIN_ALLOW_THREADS | | 355 | Py_BEGIN_ALLOW_THREADS |
342 | +#if defined(__NetBSD__) | | 356 | +#if defined(__NetBSD__) |
343 | + num = getvfsstat(fs, len, MNT_NOWAIT); | | 357 | + num = getvfsstat(fs, len, MNT_NOWAIT); |
344 | +#else | | 358 | +#else |
345 | num = getfsstat(fs, len, MNT_NOWAIT); | | 359 | num = getfsstat(fs, len, MNT_NOWAIT); |
346 | +#endif | | 360 | +#endif |
347 | Py_END_ALLOW_THREADS | | 361 | Py_END_ALLOW_THREADS |
348 | if (num == -1) { | | 362 | if (num == -1) { |
349 | PyErr_SetFromErrno(PyExc_OSError); | | 363 | PyErr_SetFromErrno(PyExc_OSError); |
350 | @@ -601,24 +637,32 @@ psutil_disk_partitions(PyObject *self, P | | 364 | @@ -601,24 +643,32 @@ |
351 | for (i = 0; i < num; i++) { | | 365 | for (i = 0; i < num; i++) { |
352 | py_tuple = NULL; | | 366 | py_tuple = NULL; |
353 | opts[0] = 0; | | 367 | opts[0] = 0; |
354 | +#if defined(__NetBSD__) | | 368 | +#if defined(__NetBSD__) |
355 | + flags = fs[i].f_flag; | | 369 | + flags = fs[i].f_flag; |
356 | +#else | | 370 | +#else |
357 | flags = fs[i].f_flags; | | 371 | flags = fs[i].f_flags; |
358 | +#endif | | 372 | +#endif |
359 | | | 373 | |
360 | // see sys/mount.h | | 374 | // see sys/mount.h |
361 | if (flags & MNT_RDONLY) | | 375 | if (flags & MNT_RDONLY) |
362 | strlcat(opts, "ro", sizeof(opts)); | | 376 | strlcat(opts, "ro", sizeof(opts)); |
363 | else | | 377 | else |
| @@ -373,27 +387,27 @@ $NetBSD: patch-psutil___psutil__bsd.c,v | | | @@ -373,27 +387,27 @@ $NetBSD: patch-psutil___psutil__bsd.c,v |
373 | - strlcat(opts, ",union", sizeof(opts)); | | 387 | - strlcat(opts, ",union", sizeof(opts)); |
374 | if (flags & MNT_ASYNC) | | 388 | if (flags & MNT_ASYNC) |
375 | strlcat(opts, ",async", sizeof(opts)); | | 389 | strlcat(opts, ",async", sizeof(opts)); |
376 | + if (flags & MNT_NOATIME) | | 390 | + if (flags & MNT_NOATIME) |
377 | + strlcat(opts, ",noatime", sizeof(opts)); | | 391 | + strlcat(opts, ",noatime", sizeof(opts)); |
378 | + if (flags & MNT_SOFTDEP) | | 392 | + if (flags & MNT_SOFTDEP) |
379 | + strlcat(opts, ",softdep", sizeof(opts)); | | 393 | + strlcat(opts, ",softdep", sizeof(opts)); |
380 | +#ifdef __FreeBSD__ | | 394 | +#ifdef __FreeBSD__ |
381 | + if (flags & MNT_UNION) | | 395 | + if (flags & MNT_UNION) |
382 | + strlcat(opts, ",union", sizeof(opts)); | | 396 | + strlcat(opts, ",union", sizeof(opts)); |
383 | if (flags & MNT_SUIDDIR) | | 397 | if (flags & MNT_SUIDDIR) |
384 | strlcat(opts, ",suiddir", sizeof(opts)); | | 398 | strlcat(opts, ",suiddir", sizeof(opts)); |
385 | if (flags & MNT_SOFTDEP) | | 399 | if (flags & MNT_SOFTDEP) |
386 | @@ -631,27 +675,33 @@ psutil_disk_partitions(PyObject *self, P | | 400 | @@ -631,27 +681,39 @@ |
387 | strlcat(opts, ",multilabel", sizeof(opts)); | | 401 | strlcat(opts, ",multilabel", sizeof(opts)); |
388 | if (flags & MNT_ACLS) | | 402 | if (flags & MNT_ACLS) |
389 | strlcat(opts, ",acls", sizeof(opts)); | | 403 | strlcat(opts, ",acls", sizeof(opts)); |
390 | - if (flags & MNT_NOATIME) | | 404 | - if (flags & MNT_NOATIME) |
391 | - strlcat(opts, ",noatime", sizeof(opts)); | | 405 | - strlcat(opts, ",noatime", sizeof(opts)); |
392 | if (flags & MNT_NOCLUSTERR) | | 406 | if (flags & MNT_NOCLUSTERR) |
393 | strlcat(opts, ",noclusterr", sizeof(opts)); | | 407 | strlcat(opts, ",noclusterr", sizeof(opts)); |
394 | if (flags & MNT_NOCLUSTERW) | | 408 | if (flags & MNT_NOCLUSTERW) |
395 | strlcat(opts, ",noclusterw", sizeof(opts)); | | 409 | strlcat(opts, ",noclusterw", sizeof(opts)); |
396 | if (flags & MNT_NFS4ACLS) | | 410 | if (flags & MNT_NFS4ACLS) |
397 | strlcat(opts, ",nfs4acls", sizeof(opts)); | | 411 | strlcat(opts, ",nfs4acls", sizeof(opts)); |
398 | -#elif __OpenBSD__ | | 412 | -#elif __OpenBSD__ |
399 | - if (flags & MNT_SYNCHRONOUS) | | 413 | - if (flags & MNT_SYNCHRONOUS) |
| @@ -405,103 +419,109 @@ $NetBSD: patch-psutil___psutil__bsd.c,v | | | @@ -405,103 +419,109 @@ $NetBSD: patch-psutil___psutil__bsd.c,v |
405 | - if (flags & MNT_ASYNC) | | 419 | - if (flags & MNT_ASYNC) |
406 | - strlcat(opts, ",async", sizeof(opts)); | | 420 | - strlcat(opts, ",async", sizeof(opts)); |
407 | - if (flags & MNT_SOFTDEP) | | 421 | - if (flags & MNT_SOFTDEP) |
408 | - strlcat(opts, ",softdep", sizeof(opts)); | | 422 | - strlcat(opts, ",softdep", sizeof(opts)); |
409 | - if (flags & MNT_NOATIME) | | 423 | - if (flags & MNT_NOATIME) |
410 | - strlcat(opts, ",noatime", sizeof(opts)); | | 424 | - strlcat(opts, ",noatime", sizeof(opts)); |
411 | +#elif __NetBSD__ | | 425 | +#elif __NetBSD__ |
412 | + if (flags & MNT_NODEV) | | 426 | + if (flags & MNT_NODEV) |
413 | + strlcat(opts, ",nodev", sizeof(opts)); | | 427 | + strlcat(opts, ",nodev", sizeof(opts)); |
414 | + if (flags & MNT_UNION) | | 428 | + if (flags & MNT_UNION) |
415 | + strlcat(opts, ",union", sizeof(opts)); | | 429 | + strlcat(opts, ",union", sizeof(opts)); |
416 | + if (flags & MNT_NOCOREDUMP) | | 430 | + if (flags & MNT_NOCOREDUMP) |
417 | + strlcat(opts, ",nocoredump", sizeof(opts)); | | 431 | + strlcat(opts, ",nocoredump", sizeof(opts)); |
| | | 432 | +#ifdef MNT_RELATIME |
418 | + if (flags & MNT_RELATIME) | | 433 | + if (flags & MNT_RELATIME) |
419 | + strlcat(opts, ",relatime", sizeof(opts)); | | 434 | + strlcat(opts, ",relatime", sizeof(opts)); |
| | | 435 | +#endif |
420 | + if (flags & MNT_IGNORE) | | 436 | + if (flags & MNT_IGNORE) |
421 | + strlcat(opts, ",ignore", sizeof(opts)); | | 437 | + strlcat(opts, ",ignore", sizeof(opts)); |
| | | 438 | +#ifdef MNT_DISCARD |
422 | + if (flags & MNT_DISCARD) | | 439 | + if (flags & MNT_DISCARD) |
423 | + strlcat(opts, ",discard", sizeof(opts)); | | 440 | + strlcat(opts, ",discard", sizeof(opts)); |
| | | 441 | +#endif |
| | | 442 | +#ifdef MNT_EXTATTR |
424 | + if (flags & MNT_EXTATTR) | | 443 | + if (flags & MNT_EXTATTR) |
425 | + strlcat(opts, ",extattr", sizeof(opts)); | | 444 | + strlcat(opts, ",extattr", sizeof(opts)); |
| | | 445 | +#endif |
426 | + if (flags & MNT_LOG) | | 446 | + if (flags & MNT_LOG) |
427 | + strlcat(opts, ",log", sizeof(opts)); | | 447 | + strlcat(opts, ",log", sizeof(opts)); |
428 | + if (flags & MNT_SYMPERM) | | 448 | + if (flags & MNT_SYMPERM) |
429 | + strlcat(opts, ",symperm", sizeof(opts)); | | 449 | + strlcat(opts, ",symperm", sizeof(opts)); |
430 | + if (flags & MNT_NODEVMTIME) | | 450 | + if (flags & MNT_NODEVMTIME) |
431 | + strlcat(opts, ",nodevmtime", sizeof(opts)); | | 451 | + strlcat(opts, ",nodevmtime", sizeof(opts)); |
432 | #endif | | 452 | #endif |
433 | py_tuple = Py_BuildValue("(ssss)", | | 453 | py_tuple = Py_BuildValue("(ssss)", |
434 | fs[i].f_mntfromname, // device | | 454 | fs[i].f_mntfromname, // device |
435 | @@ -778,7 +828,7 @@ psutil_users(PyObject *self, PyObject *a | | 455 | @@ -778,7 +840,7 @@ |
436 | if (py_retlist == NULL) | | 456 | if (py_retlist == NULL) |
437 | return NULL; | | 457 | return NULL; |
438 | | | 458 | |
439 | -#if __FreeBSD_version < 900000 || __OpenBSD__ | | 459 | -#if __FreeBSD_version < 900000 || __OpenBSD__ |
440 | +#if (defined(__FreeBSD_version) && (__FreeBSD_version < 900000)) || __OpenBSD__ | | 460 | +#if (defined(__FreeBSD_version) && (__FreeBSD_version < 900000)) || __OpenBSD__ |
441 | struct utmp ut; | | 461 | struct utmp ut; |
442 | FILE *fp; | | 462 | FILE *fp; |
443 | | | 463 | |
444 | @@ -812,6 +862,7 @@ psutil_users(PyObject *self, PyObject *a | | 464 | @@ -812,6 +874,7 @@ |
445 | #else | | 465 | #else |
446 | struct utmpx *utx; | | 466 | struct utmpx *utx; |
447 | | | 467 | |
448 | + setutxent(); | | 468 | + setutxent(); |
449 | while ((utx = getutxent()) != NULL) { | | 469 | while ((utx = getutxent()) != NULL) { |
450 | if (utx->ut_type != USER_PROCESS) | | 470 | if (utx->ut_type != USER_PROCESS) |
451 | continue; | | 471 | continue; |
452 | @@ -883,20 +934,21 @@ PsutilMethods[] = { | | 472 | @@ -883,20 +946,21 @@ |
453 | "Return process tty (terminal) number"}, | | 473 | "Return process tty (terminal) number"}, |
454 | {"proc_cwd", psutil_proc_cwd, METH_VARARGS, | | 474 | {"proc_cwd", psutil_proc_cwd, METH_VARARGS, |
455 | "Return process current working directory."}, | | 475 | "Return process current working directory."}, |
456 | -#if defined(__FreeBSD_version) && __FreeBSD_version >= 800000 || __OpenBSD__ | | 476 | -#if defined(__FreeBSD_version) && __FreeBSD_version >= 800000 || __OpenBSD__ |
457 | +#if defined(__FreeBSD_version) && __FreeBSD_version >= 800000 || __OpenBSD__ || defined(__NetBSD__) | | 477 | +#if defined(__FreeBSD_version) && __FreeBSD_version >= 800000 || __OpenBSD__ || defined(__NetBSD__) |
458 | {"proc_num_fds", psutil_proc_num_fds, METH_VARARGS, | | 478 | {"proc_num_fds", psutil_proc_num_fds, METH_VARARGS, |
459 | "Return the number of file descriptors opened by this process"}, | | 479 | "Return the number of file descriptors opened by this process"}, |
460 | #endif | | 480 | #endif |
461 | -#if defined(__FreeBSD_version) && __FreeBSD_version >= 800000 || __OpenBSD__ | | 481 | -#if defined(__FreeBSD_version) && __FreeBSD_version >= 800000 || __OpenBSD__ |
462 | +#if defined(__FreeBSD_version) && __FreeBSD_version >= 800000 || __OpenBSD__ || defined(__NetBSD__) | | 482 | +#if defined(__FreeBSD_version) && __FreeBSD_version >= 800000 || __OpenBSD__ || defined(__NetBSD__) |
463 | {"proc_open_files", psutil_proc_open_files, METH_VARARGS, | | 483 | {"proc_open_files", psutil_proc_open_files, METH_VARARGS, |
464 | "Return files opened by process as a list of (path, fd) tuples"}, | | 484 | "Return files opened by process as a list of (path, fd) tuples"}, |
465 | #endif | | 485 | #endif |
466 | | | 486 | |
467 | -#ifdef __FreeBSD__ | | 487 | -#ifdef __FreeBSD__ |
468 | +#if defined(__FreeBSD__) || defined(__NetBSD__) | | 488 | +#if defined(__FreeBSD__) || defined(__NetBSD__) |
469 | {"proc_exe", psutil_proc_exe, METH_VARARGS, | | 489 | {"proc_exe", psutil_proc_exe, METH_VARARGS, |
470 | "Return process pathname executable"}, | | 490 | "Return process pathname executable"}, |
471 | {"proc_num_threads", psutil_proc_num_threads, METH_VARARGS, | | 491 | {"proc_num_threads", psutil_proc_num_threads, METH_VARARGS, |
472 | "Return number of threads used by process"}, | | 492 | "Return number of threads used by process"}, |
473 | +#if defined(__FreeBSD__) | | 493 | +#if defined(__FreeBSD__) |
474 | {"proc_memory_maps", psutil_proc_memory_maps, METH_VARARGS, | | 494 | {"proc_memory_maps", psutil_proc_memory_maps, METH_VARARGS, |
475 | "Return a list of tuples for every process's memory map"}, | | 495 | "Return a list of tuples for every process's memory map"}, |
476 | {"proc_cpu_affinity_get", psutil_proc_cpu_affinity_get, METH_VARARGS, | | 496 | {"proc_cpu_affinity_get", psutil_proc_cpu_affinity_get, METH_VARARGS, |
477 | @@ -906,6 +958,7 @@ PsutilMethods[] = { | | 497 | @@ -906,6 +970,7 @@ |
478 | {"cpu_count_phys", psutil_cpu_count_phys, METH_VARARGS, | | 498 | {"cpu_count_phys", psutil_cpu_count_phys, METH_VARARGS, |
479 | "Return an XML string to determine the number physical CPUs."}, | | 499 | "Return an XML string to determine the number physical CPUs."}, |
480 | #endif | | 500 | #endif |
481 | +#endif | | 501 | +#endif |
482 | | | 502 | |
483 | // --- system-related functions | | 503 | // --- system-related functions |
484 | | | 504 | |
485 | @@ -932,7 +985,7 @@ PsutilMethods[] = { | | 505 | @@ -932,7 +997,7 @@ |
486 | "Return a Python dict of tuples for disk I/O information"}, | | 506 | "Return a Python dict of tuples for disk I/O information"}, |
487 | {"users", psutil_users, METH_VARARGS, | | 507 | {"users", psutil_users, METH_VARARGS, |
488 | "Return currently connected users as a list of tuples"}, | | 508 | "Return currently connected users as a list of tuples"}, |
489 | -#ifdef __FreeBSD__ | | 509 | -#ifdef __FreeBSD__ |
490 | +#if defined(__FreeBSD__) || defined(__NetBSD__) | | 510 | +#if defined(__FreeBSD__) || defined(__NetBSD__) |
491 | {"net_connections", psutil_net_connections, METH_VARARGS, | | 511 | {"net_connections", psutil_net_connections, METH_VARARGS, |
492 | "Return system-wide open connections."}, | | 512 | "Return system-wide open connections."}, |
493 | #endif | | 513 | #endif |
494 | @@ -1010,6 +1063,13 @@ void init_psutil_bsd(void) | | 514 | @@ -1010,6 +1075,13 @@ |
495 | PyModule_AddIntConstant(module, "SZOMB", SZOMB); // unused | | 515 | PyModule_AddIntConstant(module, "SZOMB", SZOMB); // unused |
496 | PyModule_AddIntConstant(module, "SDEAD", SDEAD); | | 516 | PyModule_AddIntConstant(module, "SDEAD", SDEAD); |
497 | PyModule_AddIntConstant(module, "SONPROC", SONPROC); | | 517 | PyModule_AddIntConstant(module, "SONPROC", SONPROC); |
498 | +#elif defined(__NetBSD__) | | 518 | +#elif defined(__NetBSD__) |
499 | + PyModule_AddIntConstant(module, "SIDL", SIDL); | | 519 | + PyModule_AddIntConstant(module, "SIDL", SIDL); |
500 | + PyModule_AddIntConstant(module, "SACTIVE", SACTIVE); | | 520 | + PyModule_AddIntConstant(module, "SACTIVE", SACTIVE); |
501 | + PyModule_AddIntConstant(module, "SDYING", SDYING); | | 521 | + PyModule_AddIntConstant(module, "SDYING", SDYING); |
502 | + PyModule_AddIntConstant(module, "SSTOP", SSTOP); | | 522 | + PyModule_AddIntConstant(module, "SSTOP", SSTOP); |
503 | + PyModule_AddIntConstant(module, "SZOMB", SZOMB); | | 523 | + PyModule_AddIntConstant(module, "SZOMB", SZOMB); |
504 | + PyModule_AddIntConstant(module, "SDEAD", SDEAD); | | 524 | + PyModule_AddIntConstant(module, "SDEAD", SDEAD); |
505 | #endif | | 525 | #endif |
506 | | | 526 | |
507 | // connection status constants | | 527 | // connection status constants |