Deleted Added
full compact
procstat_sigs.c (225736) procstat_sigs.c (250871)
1/*-
2 * Copyright (c) 2010 Konstantin Belousov
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
1/*-
2 * Copyright (c) 2010 Konstantin Belousov
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 * $FreeBSD: stable/9/usr.bin/procstat/procstat_sigs.c 221807 2011-05-12 10:11:39Z stas $
26 * $FreeBSD: stable/9/usr.bin/procstat/procstat_sigs.c 250871 2013-05-21 19:05:27Z trociny $
27 */
28
29#include <sys/param.h>
30#include <sys/sysctl.h>
31#include <sys/user.h>
32
33#include <ctype.h>
34#include <err.h>

--- 46 unchanged lines hidden (view full) ---

81 procstat_print_sig(&kipp->ki_siglist, j, 'P');
82 procstat_print_sig(&kipp->ki_sigignore, j, 'I');
83 procstat_print_sig(&kipp->ki_sigcatch, j, 'C');
84 printf("\n");
85 }
86}
87
88void
27 */
28
29#include <sys/param.h>
30#include <sys/sysctl.h>
31#include <sys/user.h>
32
33#include <ctype.h>
34#include <err.h>

--- 46 unchanged lines hidden (view full) ---

81 procstat_print_sig(&kipp->ki_siglist, j, 'P');
82 procstat_print_sig(&kipp->ki_sigignore, j, 'I');
83 procstat_print_sig(&kipp->ki_sigcatch, j, 'C');
84 printf("\n");
85 }
86}
87
88void
89procstat_threads_sigs(struct procstat *prstat __unused, struct kinfo_proc *kipp)
89procstat_threads_sigs(struct procstat *procstat, struct kinfo_proc *kipp)
90{
91 struct kinfo_proc *kip;
92 pid_t pid;
90{
91 struct kinfo_proc *kip;
92 pid_t pid;
93 int error, name[4], j;
94 unsigned int i;
95 size_t len;
93 int j;
94 unsigned int count, i;
96
97 pid = kipp->ki_pid;
98 if (!hflag)
99 printf("%5s %6s %-16s %-7s %4s\n", "PID", "TID", "COMM",
100 "SIG", "FLAGS");
101
95
96 pid = kipp->ki_pid;
97 if (!hflag)
98 printf("%5s %6s %-16s %-7s %4s\n", "PID", "TID", "COMM",
99 "SIG", "FLAGS");
100
102 /*
103 * We need to re-query for thread information, so don't use *kipp.
104 */
105 name[0] = CTL_KERN;
106 name[1] = KERN_PROC;
107 name[2] = KERN_PROC_PID | KERN_PROC_INC_THREAD;
108 name[3] = pid;
109
110 len = 0;
111 error = sysctl(name, 4, NULL, &len, NULL, 0);
112 if (error < 0 && errno != ESRCH) {
113 warn("sysctl: kern.proc.pid: %d", pid);
114 return;
115 }
116 if (error < 0)
117 return;
118
119 kip = malloc(len);
101 kip = procstat_getprocs(procstat, KERN_PROC_PID | KERN_PROC_INC_THREAD,
102 pid, &count);
120 if (kip == NULL)
103 if (kip == NULL)
121 err(-1, "malloc");
122
123 if (sysctl(name, 4, kip, &len, NULL, 0) < 0) {
124 warn("sysctl: kern.proc.pid: %d", pid);
125 free(kip);
126 return;
104 return;
127 }
128
129 kinfo_proc_sort(kip, len / sizeof(*kipp));
130 for (i = 0; i < len / sizeof(*kipp); i++) {
105 kinfo_proc_sort(kip, count);
106 for (i = 0; i < count; i++) {
131 kipp = &kip[i];
132 for (j = 1; j <= _SIG_MAXSIG; j++) {
133 printf("%5d ", pid);
134 printf("%6d ", kipp->ki_tid);
135 printf("%-16s ", kipp->ki_comm);
136 procstat_print_signame(j);
137 printf(" ");
138 procstat_print_sig(&kipp->ki_siglist, j, 'P');
139 procstat_print_sig(&kipp->ki_sigmask, j, 'B');
140 printf("\n");
141 }
142 }
107 kipp = &kip[i];
108 for (j = 1; j <= _SIG_MAXSIG; j++) {
109 printf("%5d ", pid);
110 printf("%6d ", kipp->ki_tid);
111 printf("%-16s ", kipp->ki_comm);
112 procstat_print_signame(j);
113 printf(" ");
114 procstat_print_sig(&kipp->ki_siglist, j, 'P');
115 procstat_print_sig(&kipp->ki_sigmask, j, 'B');
116 printf("\n");
117 }
118 }
143 free(kip);
119 procstat_freeprocs(procstat, kip);
144}
120}