Thu Jan 7 08:14:24 2016 UTC ()
Fix build on netbsd-5


(sborrill)
diff -r1.11 -r1.12 pkgsrc/sysutils/py-psutil/distinfo
diff -r1.1 -r1.2 pkgsrc/sysutils/py-psutil/patches/patch-psutil___psutil__bsd.c

cvs diff -r1.11 -r1.12 pkgsrc/sysutils/py-psutil/distinfo (expand / switch to unified diff)

--- pkgsrc/sysutils/py-psutil/distinfo 2015/12/04 09:42:18 1.11
+++ pkgsrc/sysutils/py-psutil/distinfo 2016/01/07 08:14:23 1.12
@@ -1,16 +1,16 @@ @@ -1,16 +1,16 @@
1$NetBSD: distinfo,v 1.11 2015/12/04 09:42:18 ryoon Exp $ 1$NetBSD: distinfo,v 1.12 2016/01/07 08:14:23 sborrill Exp $
2 2
3SHA1 (psutil-release-3.3.0.tar.gz) = e1a1ff558a90ad48302ad4aaf485a1841d67ee89 3SHA1 (psutil-release-3.3.0.tar.gz) = e1a1ff558a90ad48302ad4aaf485a1841d67ee89
4RMD160 (psutil-release-3.3.0.tar.gz) = 59ddfcdd2bdaa4274ff22e40da021c0ff69191a1 4RMD160 (psutil-release-3.3.0.tar.gz) = 59ddfcdd2bdaa4274ff22e40da021c0ff69191a1
5SHA512 (psutil-release-3.3.0.tar.gz) = c0865631a3cb3a347c5e24328108f05a84f9468f661ca864764df3e5a723a52e38b338a3126b870c7f3a54fbbae60e6e4d80dba54f9b5459edb08fd24d078da3 5SHA512 (psutil-release-3.3.0.tar.gz) = c0865631a3cb3a347c5e24328108f05a84f9468f661ca864764df3e5a723a52e38b338a3126b870c7f3a54fbbae60e6e4d80dba54f9b5459edb08fd24d078da3
6Size (psutil-release-3.3.0.tar.gz) = 256632 bytes 6Size (psutil-release-3.3.0.tar.gz) = 256632 bytes
7SHA1 (patch-psutil_____init____.py) = 40b3108ab934ed8529a3989eda331d9d2cf2b7af 7SHA1 (patch-psutil_____init____.py) = 40b3108ab934ed8529a3989eda331d9d2cf2b7af
8SHA1 (patch-psutil___psbsd.py) = e80fd4dcfad88468963d67c90b79c09625c43d1c 8SHA1 (patch-psutil___psbsd.py) = e80fd4dcfad88468963d67c90b79c09625c43d1c
9SHA1 (patch-psutil___psutil__bsd.c) = 4efa4ae9fcd16961e3bca987726732260214b635 9SHA1 (patch-psutil___psutil__bsd.c) = 78db0683c961a03462e47c1db6ac448f26ed1014
10SHA1 (patch-psutil___psutil__posix.c) = 6a01a7d45481ab1f512ef90164548a8a8b5cb831 10SHA1 (patch-psutil___psutil__posix.c) = 6a01a7d45481ab1f512ef90164548a8a8b5cb831
11SHA1 (patch-psutil_arch_bsd_netbsd.c) = a1183af4f7745c9774e01e3b3addf5f817a084ef 11SHA1 (patch-psutil_arch_bsd_netbsd.c) = a1183af4f7745c9774e01e3b3addf5f817a084ef
12SHA1 (patch-psutil_arch_bsd_netbsd.h) = 4d58a458b10e34e4fac862cc70e53b9faf65dcb0 12SHA1 (patch-psutil_arch_bsd_netbsd.h) = 4d58a458b10e34e4fac862cc70e53b9faf65dcb0
13SHA1 (patch-psutil_arch_bsd_netbsd__socks.c) = f02ef45768ba34ede2ace38901ee59a15b817537 13SHA1 (patch-psutil_arch_bsd_netbsd__socks.c) = f02ef45768ba34ede2ace38901ee59a15b817537
14SHA1 (patch-psutil_arch_bsd_netbsd__socks.h) = a0af0fe10b7d5243cfc89cb23a863fd819b6cfcc 14SHA1 (patch-psutil_arch_bsd_netbsd__socks.h) = a0af0fe10b7d5243cfc89cb23a863fd819b6cfcc
15SHA1 (patch-setup.py) = daf3e4ebed119a234387d5b37cf693bbf8156a5d 15SHA1 (patch-setup.py) = daf3e4ebed119a234387d5b37cf693bbf8156a5d
16SHA1 (patch-test_test__psutil.py) = fee930410be0e083b5f616f41f30f6687ab224d9 16SHA1 (patch-test_test__psutil.py) = fee930410be0e083b5f616f41f30f6687ab224d9

cvs diff -r1.1 -r1.2 pkgsrc/sysutils/py-psutil/patches/Attic/patch-psutil___psutil__bsd.c (expand / switch to unified diff)

--- pkgsrc/sysutils/py-psutil/patches/Attic/patch-psutil___psutil__bsd.c 2015/12/01 14:07:36 1.1
+++ pkgsrc/sysutils/py-psutil/patches/Attic/patch-psutil___psutil__bsd.c 2016/01/07 08:14:23 1.2
@@ -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