| @@ -1,79 +1,81 @@ | | | @@ -1,79 +1,81 @@ |
1 | $NetBSD: patch-src_processes.c,v 1.6 2017/02/14 21:23:13 joerg Exp $ | | 1 | $NetBSD: patch-src_processes.c,v 1.7 2017/06/23 16:52:45 kamil Exp $ |
2 | | | 2 | |
3 | Add a port to NetBSD. | | 3 | Add a port to NetBSD. |
4 | | | 4 | |
5 | --- src/processes.c.orig 2017-01-23 07:53:57.000000000 +0000 | | 5 | --- src/processes.c.orig 2017-06-06 18:13:54.693164693 +0000 |
6 | +++ src/processes.c | | 6 | +++ src/processes.c |
7 | @@ -95,14 +95,14 @@ | | 7 | @@ -95,14 +95,16 @@ |
8 | /* #endif KERNEL_LINUX */ | | 8 | /* #endif KERNEL_LINUX */ |
9 | | | 9 | |
10 | #elif HAVE_LIBKVM_GETPROCS && \ | | 10 | #elif HAVE_LIBKVM_GETPROCS && \ |
11 | - (HAVE_STRUCT_KINFO_PROC_FREEBSD || HAVE_STRUCT_KINFO_PROC_OPENBSD) | | 11 | - (HAVE_STRUCT_KINFO_PROC_FREEBSD || HAVE_STRUCT_KINFO_PROC_OPENBSD) |
12 | + (HAVE_STRUCT_KINFO_PROC_FREEBSD || HAVE_STRUCT_KINFO_PROC_OPENBSD || HAVE_STRUCT_KINFO_PROC2_NETBSD) | | 12 | + (HAVE_STRUCT_KINFO_PROC_FREEBSD || HAVE_STRUCT_KINFO_PROC_OPENBSD || HAVE_STRUCT_KINFO_PROC2_NETBSD) |
13 | #include <kvm.h> | | 13 | #include <kvm.h> |
14 | #include <sys/param.h> | | 14 | #include <sys/param.h> |
15 | #include <sys/proc.h> | | 15 | #include <sys/proc.h> |
16 | #include <sys/sysctl.h> | | 16 | #include <sys/sysctl.h> |
| | | 17 | +#if defined(__FreeBSD__) || defined(__DragonFly__) |
17 | #include <sys/user.h> | | 18 | #include <sys/user.h> |
| | | 19 | +#endif |
18 | /* #endif HAVE_LIBKVM_GETPROCS && (HAVE_STRUCT_KINFO_PROC_FREEBSD || | | 20 | /* #endif HAVE_LIBKVM_GETPROCS && (HAVE_STRUCT_KINFO_PROC_FREEBSD || |
19 | - * HAVE_STRUCT_KINFO_PROC_OPENBSD) */ | | 21 | - * HAVE_STRUCT_KINFO_PROC_OPENBSD) */ |
20 | + * HAVE_STRUCT_KINFO_PROC_OPENBSD || HAVE_STRUCT_KINFO_PROC2_NETBSD) */ | | 22 | + * HAVE_STRUCT_KINFO_PROC_OPENBSD || HAVE_STRUCT_KINFO_PROC2_NETBSD) */ |
21 | | | 23 | |
22 | #elif HAVE_PROCINFO_H | | 24 | #elif HAVE_PROCINFO_H |
23 | #include <procinfo.h> | | 25 | #include <procinfo.h> |
24 | @@ -244,10 +244,15 @@ static void ps_fill_details(const procst | | 26 | @@ -244,10 +246,15 @@ static void ps_fill_details(const procst |
25 | /* #endif KERNEL_LINUX */ | | 27 | /* #endif KERNEL_LINUX */ |
26 | | | 28 | |
27 | #elif HAVE_LIBKVM_GETPROCS && \ | | 29 | #elif HAVE_LIBKVM_GETPROCS && \ |
28 | - (HAVE_STRUCT_KINFO_PROC_FREEBSD || HAVE_STRUCT_KINFO_PROC_OPENBSD) | | 30 | - (HAVE_STRUCT_KINFO_PROC_FREEBSD || HAVE_STRUCT_KINFO_PROC_OPENBSD) |
29 | + (HAVE_STRUCT_KINFO_PROC_FREEBSD || HAVE_STRUCT_KINFO_PROC_OPENBSD || HAVE_STRUCT_KINFO_PROC2_NETBSD) | | 31 | + (HAVE_STRUCT_KINFO_PROC_FREEBSD || HAVE_STRUCT_KINFO_PROC_OPENBSD || HAVE_STRUCT_KINFO_PROC2_NETBSD) |
30 | static int pagesize; | | 32 | static int pagesize; |
31 | + | | 33 | + |
32 | +#if KERNEL_NETBSD | | 34 | +#if KERNEL_NETBSD |
33 | +int maxslp; | | 35 | +int maxslp; |
34 | +#endif | | 36 | +#endif |
35 | + | | 37 | + |
36 | /* #endif HAVE_LIBKVM_GETPROCS && (HAVE_STRUCT_KINFO_PROC_FREEBSD || | | 38 | /* #endif HAVE_LIBKVM_GETPROCS && (HAVE_STRUCT_KINFO_PROC_FREEBSD || |
37 | - * HAVE_STRUCT_KINFO_PROC_OPENBSD) */ | | 39 | - * HAVE_STRUCT_KINFO_PROC_OPENBSD) */ |
38 | + * HAVE_STRUCT_KINFO_PROC_OPENBSD || HAVE_STRUCT_KINFO_PROC2_NETBSD) */ | | 40 | + * HAVE_STRUCT_KINFO_PROC_OPENBSD || HAVE_STRUCT_KINFO_PROC2_NETBSD) */ |
39 | | | 41 | |
40 | #elif HAVE_PROCINFO_H | | 42 | #elif HAVE_PROCINFO_H |
41 | static struct procentry64 procentry[MAXPROCENTRY]; | | 43 | static struct procentry64 procentry[MAXPROCENTRY]; |
42 | @@ -601,10 +606,21 @@ static int ps_init(void) { | | 44 | @@ -601,10 +608,21 @@ static int ps_init(void) { |
43 | /* #endif KERNEL_LINUX */ | | 45 | /* #endif KERNEL_LINUX */ |
44 | | | 46 | |
45 | #elif HAVE_LIBKVM_GETPROCS && \ | | 47 | #elif HAVE_LIBKVM_GETPROCS && \ |
46 | - (HAVE_STRUCT_KINFO_PROC_FREEBSD || HAVE_STRUCT_KINFO_PROC_OPENBSD) | | 48 | - (HAVE_STRUCT_KINFO_PROC_FREEBSD || HAVE_STRUCT_KINFO_PROC_OPENBSD) |
47 | + (HAVE_STRUCT_KINFO_PROC_FREEBSD || HAVE_STRUCT_KINFO_PROC_OPENBSD || HAVE_STRUCT_KINFO_PROC2_NETBSD) | | 49 | + (HAVE_STRUCT_KINFO_PROC_FREEBSD || HAVE_STRUCT_KINFO_PROC_OPENBSD || HAVE_STRUCT_KINFO_PROC2_NETBSD) |
48 | +#if KERNEL_NETBSD | | 50 | +#if KERNEL_NETBSD |
49 | + int mib[2]; | | 51 | + int mib[2]; |
50 | + size_t size; | | 52 | + size_t size; |
51 | + | | 53 | + |
52 | + mib[0] = CTL_VM; | | 54 | + mib[0] = CTL_VM; |
53 | + mib[1] = VM_MAXSLP; | | 55 | + mib[1] = VM_MAXSLP; |
54 | + size = sizeof(maxslp); | | 56 | + size = sizeof(maxslp); |
55 | + if (sysctl(mib, 2, &maxslp, &size, NULL, 0) == -1) | | 57 | + if (sysctl(mib, 2, &maxslp, &size, NULL, 0) == -1) |
56 | + maxslp = 20; /* reasonable default? */ | | 58 | + maxslp = 20; /* reasonable default? */ |
57 | +#endif | | 59 | +#endif |
58 | + | | 60 | + |
59 | pagesize = getpagesize(); | | 61 | pagesize = getpagesize(); |
60 | /* #endif HAVE_LIBKVM_GETPROCS && (HAVE_STRUCT_KINFO_PROC_FREEBSD || | | 62 | /* #endif HAVE_LIBKVM_GETPROCS && (HAVE_STRUCT_KINFO_PROC_FREEBSD || |
61 | - * HAVE_STRUCT_KINFO_PROC_OPENBSD) */ | | 63 | - * HAVE_STRUCT_KINFO_PROC_OPENBSD) */ |
62 | + * HAVE_STRUCT_KINFO_PROC_OPENBSD || HAVE_STRUCT_KINFO_PROC2_NETBSD) */ | | 64 | + * HAVE_STRUCT_KINFO_PROC_OPENBSD || HAVE_STRUCT_KINFO_PROC2_NETBSD) */ |
63 | | | 65 | |
64 | #elif HAVE_PROCINFO_H | | 66 | #elif HAVE_PROCINFO_H |
65 | pagesize = getpagesize(); | | 67 | pagesize = getpagesize(); |
66 | @@ -1896,6 +1912,187 @@ static int ps_read(void) { | | 68 | @@ -1896,6 +1914,187 @@ static int ps_read(void) { |
67 | ps_submit_proc_list(ps_ptr); | | 69 | ps_submit_proc_list(ps_ptr); |
68 | /* #endif HAVE_LIBKVM_GETPROCS && HAVE_STRUCT_KINFO_PROC_FREEBSD */ | | 70 | /* #endif HAVE_LIBKVM_GETPROCS && HAVE_STRUCT_KINFO_PROC_FREEBSD */ |
69 | | | 71 | |
70 | +#elif HAVE_LIBKVM_GETPROCS && HAVE_STRUCT_KINFO_PROC2_NETBSD | | 72 | +#elif HAVE_LIBKVM_GETPROCS && HAVE_STRUCT_KINFO_PROC2_NETBSD |
71 | + int running = 0; | | 73 | + int running = 0; |
72 | + int sleeping = 0; | | 74 | + int sleeping = 0; |
73 | + int zombies = 0; | | 75 | + int zombies = 0; |
74 | + int stopped = 0; | | 76 | + int stopped = 0; |
75 | + int blocked = 0; | | 77 | + int blocked = 0; |
76 | + int idle = 0; | | 78 | + int idle = 0; |
77 | + int wait = 0; | | 79 | + int wait = 0; |
78 | + | | 80 | + |
79 | + kvm_t *kd; | | 81 | + kvm_t *kd; |