24 */
25
26
27 #include <signal.h>
28
29 #include <bsd/bsd.h>
30
31 /* External references.
32 */
33
34 /* Forward references.
35 */
36
37 /* Static data.
38 */
39
40 extern SIG_PF
41 bsd_signal (int Signal, SIG_PF Handler)
42 {
43 auto SIG_PF previous_handler;
44 #ifdef SUN5_0
45 #ifdef sun
46 previous_handler = sigset (Signal, Handler);
47 #else
48 auto struct sigaction new_action;
49 auto struct sigaction old_action;
50
51 new_action.sa_flags = SA_SIGINFO;
52 new_action.sa_handler = (void (*) ()) Handler;
53 (void) sigemptyset (&new_action.sa_mask);
54 (void) sigaddset (&new_action.sa_mask, Signal);
55
56 (void) sigaction (Signal, &new_action, &old_action);
57
58 previous_handler = (SIG_PF) old_action.sa_handler;
59 #endif
60 #elif defined(linux)
61 previous_handler = sigset (Signal, Handler);
62 #else
63 previous_handler = signal (Signal, Handler);
64 #endif
65 return previous_handler;
66 }
67
68 extern void
69 bsd_signals (void)
70 {
71 static int initialized = 0;
72
73 if (initialized == 0)
74 {
75 initialized = 1;
76 #if !defined(SUN5_0) && !defined(linux)
77 #if defined(SIGHUP)
78 (void) bsd_signal (SIGHUP, SIG_DFL);
79 #endif
80 #if defined(SIGINT)
81 (void) bsd_signal (SIGINT, SIG_DFL);
82 #endif
83 #if defined(SIGQUIT)
84 (void) bsd_signal (SIGQUIT, SIG_DFL);
85 #endif
86 #if defined(SIGILL)
87 (void) bsd_signal (SIGILL, SIG_DFL);
88 #endif
89 #if defined(SIGTRAP)
90 (void) bsd_signal (SIGTRAP, SIG_DFL);
91 #endif
92 #if defined(SIGIOT)
93 (void) bsd_signal (SIGIOT, SIG_DFL);
94 #endif
95 #if defined(SIGABRT)
96 (void) bsd_signal (SIGABRT, SIG_DFL);
97 #endif
98 #if defined(SIGEMT)
99 (void) bsd_signal (SIGEMT, SIG_DFL);
100 #endif
101 #if defined(SIGFPE)
102 (void) bsd_signal (SIGFPE, SIG_DFL);
103 #endif
104 #if defined(SIGBUS)
105 (void) bsd_signal (SIGBUS, SIG_DFL);
106 #endif
107 #if defined(SIGSEGV)
108 (void) bsd_signal (SIGSEGV, SIG_DFL);
109 #endif
110 #if defined(SIGSYS)
111 (void) bsd_signal (SIGSYS, SIG_DFL);
112 #endif
113 #if defined(SIGPIPE)
114 (void) bsd_signal (SIGPIPE, SIG_DFL);
115 #endif
116 #if defined(SIGALRM)
117 (void) bsd_signal (SIGALRM, SIG_DFL);
118 #endif
119 #if defined(SIGTERM)
120 (void) bsd_signal (SIGTERM, SIG_DFL);
121 #endif
122 #if defined(SIGUSR1)
123 (void) bsd_signal (SIGUSR1, SIG_DFL);
124 #endif
125 #if defined(SIGUSR2)
126 (void) bsd_signal (SIGUSR2, SIG_DFL);
127 #endif
128 #if defined(SIGCLD)
129 (void) bsd_signal (SIGCLD, SIG_DFL);
130 #endif
131 #if defined(SIGCHLD)
132 (void) bsd_signal (SIGCHLD, SIG_DFL);
133 #endif
134 #if defined(SIGPWR)
135 (void) bsd_signal (SIGPWR, SIG_DFL);
136 #endif
137 #if defined(SIGWINCH)
138 (void) bsd_signal (SIGWINCH, SIG_DFL);
139 #endif
140 #if defined(SIGURG)
141 (void) bsd_signal (SIGURG, SIG_DFL);
142 #endif
143 #if defined(SIGIO)
144 (void) bsd_signal (SIGIO, SIG_DFL);
145 #else
146 #if defined(SIGPOLL)
147 (void) bsd_signal (SIGPOLL, SIG_DFL);
148 #endif
149 #endif
150 #if defined(SIGTSTP)
151 (void) bsd_signal (SIGTSTP, SIG_DFL);
152 #endif
153 #if defined(SIGCONT)
154 (void) bsd_signal (SIGCONT, SIG_DFL);
155 #endif
156 #if defined(SIGTTIN)
157 (void) bsd_signal (SIGTTIN, SIG_DFL);
158 #endif
159 #if defined(SIGTTOU)
160 (void) bsd_signal (SIGTTOU, SIG_DFL);
161 #endif
162 #if defined(SIGVTALRM)
163 (void) bsd_signal (SIGVTALRM, SIG_DFL);
164 #endif
165 #if defined(SIGPROF)
166 (void) bsd_signal (SIGPROF, SIG_DFL);
167 #endif
168 #if defined(SIGXCPU)
169 (void) bsd_signal (SIGXCPU, SIG_DFL);
170 #endif
171 #if defined(SIGXFSZ)
172 (void) bsd_signal (SIGXFSZ, SIG_DFL);
173 #endif
174 #endif
175 }
176
177 return;
178 }
|
24 */
25
26
27 #include <signal.h>
28
29 #include <bsd/bsd.h>
30
31 /* External references.
32 */
33
34 /* Forward references.
35 */
36
37 /* Static data.
38 */
39
40 extern SIG_PF
41 bsd_signal (int Signal, SIG_PF Handler)
42 {
43 auto SIG_PF previous_handler;
44 #ifdef sun
45 previous_handler = sigset (Signal, Handler);
46 #else
47 auto struct sigaction new_action;
48 auto struct sigaction old_action;
49
50 new_action.sa_flags = SA_SIGINFO;
51 new_action.sa_handler = (void (*) ()) Handler;
52 (void) sigemptyset (&new_action.sa_mask);
53 (void) sigaddset (&new_action.sa_mask, Signal);
54
55 (void) sigaction (Signal, &new_action, &old_action);
56
57 previous_handler = (SIG_PF) old_action.sa_handler;
58 #endif
59 return previous_handler;
60 }
61
62 extern void
63 bsd_signals (void)
64 {
65 static int initialized = 0;
66
67 if (initialized == 0)
68 {
69 initialized = 1;
70 }
71
72 return;
73 }
|