45 #include <sys/procfs.h>
46 #include <sys/wait.h>
47 #include <sys/class.h>
48 #include <sys/mman.h>
49 #include <sys/procset.h>
50 #include <sys/kmem.h>
51 #include <sys/cpuvar.h>
52 #include <sys/prsystm.h>
53 #include <sys/debug.h>
54 #include <vm/as.h>
55 #include <sys/bitmap.h>
56 #include <c2/audit.h>
57 #include <sys/core.h>
58 #include <sys/schedctl.h>
59 #include <sys/contract/process_impl.h>
60 #include <sys/cyclic.h>
61 #include <sys/dtrace.h>
62 #include <sys/sdt.h>
63 #include <sys/signalfd.h>
64
65 const k_sigset_t nullsmask = {0, 0, 0};
66
67 const k_sigset_t fillset = /* MUST be contiguous */
68 {FILLSET0, FILLSET1, FILLSET2};
69
70 const k_sigset_t cantmask =
71 {CANTMASK0, CANTMASK1, CANTMASK2};
72
73 const k_sigset_t cantreset =
74 {(sigmask(SIGILL)|sigmask(SIGTRAP)|sigmask(SIGPWR)), 0, 0};
75
76 const k_sigset_t ignoredefault =
77 {(sigmask(SIGCONT)|sigmask(SIGCLD)|sigmask(SIGPWR)
78 |sigmask(SIGWINCH)|sigmask(SIGURG)|sigmask(SIGWAITING)),
79 (sigmask(SIGLWP)|sigmask(SIGCANCEL)|sigmask(SIGFREEZE)
80 |sigmask(SIGTHAW)|sigmask(SIGXRES)|sigmask(SIGJVM1)
81 |sigmask(SIGJVM2)|sigmask(SIGINFO)), 0};
82
83 const k_sigset_t stopdefault =
84 {(sigmask(SIGSTOP)|sigmask(SIGTSTP)|sigmask(SIGTTOU)|sigmask(SIGTTIN)),
85 0, 0};
86
87 const k_sigset_t coredefault =
88 {(sigmask(SIGQUIT)|sigmask(SIGILL)|sigmask(SIGTRAP)|sigmask(SIGIOT)
89 |sigmask(SIGEMT)|sigmask(SIGFPE)|sigmask(SIGBUS)|sigmask(SIGSEGV)
90 |sigmask(SIGSYS)|sigmask(SIGXCPU)|sigmask(SIGXFSZ)), 0, 0};
91
92 const k_sigset_t holdvfork =
93 {(sigmask(SIGTTOU)|sigmask(SIGTTIN)|sigmask(SIGTSTP)), 0, 0};
94
95 static int isjobstop(int);
96 static void post_sigcld(proc_t *, sigqueue_t *);
97
98
99 /*
100 * signalfd helper function which is set when the signalfd driver loads.
101 */
102 void (*sigfd_exit_helper)();
103
104 /*
105 * Internal variables for counting number of user thread stop requests posted.
106 * They may not be accurate at some special situation such as that a virtually
107 * stopped thread starts to run.
108 */
109 static int num_utstop;
110 /*
111 * Internal variables for broadcasting an event when all thread stop requests
112 * are processed.
113 */
|
45 #include <sys/procfs.h>
46 #include <sys/wait.h>
47 #include <sys/class.h>
48 #include <sys/mman.h>
49 #include <sys/procset.h>
50 #include <sys/kmem.h>
51 #include <sys/cpuvar.h>
52 #include <sys/prsystm.h>
53 #include <sys/debug.h>
54 #include <vm/as.h>
55 #include <sys/bitmap.h>
56 #include <c2/audit.h>
57 #include <sys/core.h>
58 #include <sys/schedctl.h>
59 #include <sys/contract/process_impl.h>
60 #include <sys/cyclic.h>
61 #include <sys/dtrace.h>
62 #include <sys/sdt.h>
63 #include <sys/signalfd.h>
64
65 const k_sigset_t nullsmask = {{0, 0, 0}};
66
67 const k_sigset_t fillset = { /* MUST be contiguous */
68 {FILLSET0, FILLSET1, FILLSET2}};
69
70 const k_sigset_t cantmask = {
71 {CANTMASK0, CANTMASK1, CANTMASK2}};
72
73 const k_sigset_t cantreset = {
74 {(sigmask(SIGILL)|sigmask(SIGTRAP)|sigmask(SIGPWR)), 0, 0}};
75
76 const k_sigset_t ignoredefault = {
77 {(sigmask(SIGCONT)|sigmask(SIGCLD)|sigmask(SIGPWR)
78 |sigmask(SIGWINCH)|sigmask(SIGURG)|sigmask(SIGWAITING)),
79 (sigmask(SIGLWP)|sigmask(SIGCANCEL)|sigmask(SIGFREEZE)
80 |sigmask(SIGTHAW)|sigmask(SIGXRES)|sigmask(SIGJVM1)
81 |sigmask(SIGJVM2)|sigmask(SIGINFO)), 0}};
82
83 const k_sigset_t stopdefault = {
84 {(sigmask(SIGSTOP)|sigmask(SIGTSTP)|sigmask(SIGTTOU)|sigmask(SIGTTIN)),
85 0, 0}};
86
87 const k_sigset_t coredefault = {
88 {(sigmask(SIGQUIT)|sigmask(SIGILL)|sigmask(SIGTRAP)|sigmask(SIGIOT)
89 |sigmask(SIGEMT)|sigmask(SIGFPE)|sigmask(SIGBUS)|sigmask(SIGSEGV)
90 |sigmask(SIGSYS)|sigmask(SIGXCPU)|sigmask(SIGXFSZ)), 0, 0}};
91
92 const k_sigset_t holdvfork = {
93 {(sigmask(SIGTTOU)|sigmask(SIGTTIN)|sigmask(SIGTSTP)), 0, 0}};
94
95 static int isjobstop(int);
96 static void post_sigcld(proc_t *, sigqueue_t *);
97
98
99 /*
100 * signalfd helper function which is set when the signalfd driver loads.
101 */
102 void (*sigfd_exit_helper)();
103
104 /*
105 * Internal variables for counting number of user thread stop requests posted.
106 * They may not be accurate at some special situation such as that a virtually
107 * stopped thread starts to run.
108 */
109 static int num_utstop;
110 /*
111 * Internal variables for broadcasting an event when all thread stop requests
112 * are processed.
113 */
|