4 /*#include "signal.h"*/
6 void (*signal(int sig, void (*func)(int a))) (int a);
9 /* prototype EiC internal signal handlers */
11 static val_t eic_raise(void)
15 v.ival = raise(arg(0,getargs(),int));
21 extern void EiC_exit_call(int);
22 extern void EiC_bus_err(int);
23 extern void EiC_ill_oper(int);
24 extern void EiC_stor_access(int);
25 extern void EiC_float_err(int);
26 extern void EiC_term_int(int);
30 /* SIG_IGN must be last one */
31 static void (*EiC_Cfunc[32])(int) = {
32 EiC_exit_call,EiC_bus_err,EiC_ill_oper,
33 EiC_stor_access,EiC_float_err,EiC_term_int,
34 /*SIG_DFL, SIG_ERR, SIG_IGN,*/
38 static void MiddleOne_0(int x0 )
40 setArg(0, (void*)EiC_Cfunc[0], int ,x0);
42 EiC_callBack((void*)EiC_Cfunc[0]);
45 static void MiddleOne_1(int x0 )
47 setArg(0, (void*)EiC_Cfunc[1], int ,x0);
49 EiC_callBack((void*)EiC_Cfunc[1]);
53 static void MiddleOne_2(int x0 )
55 setArg(0, (void*)EiC_Cfunc[2], int ,x0);
57 EiC_callBack((void*)EiC_Cfunc[2]);
61 static void MiddleOne_3(int x0 )
63 setArg(0, (void*)EiC_Cfunc[3], int ,x0);
65 EiC_callBack((void*)EiC_Cfunc[3]);
69 static void MiddleOne_4(int x0 )
71 setArg(0, (void*)EiC_Cfunc[4], int ,x0);
73 EiC_callBack((void*)EiC_Cfunc[4]);
77 static void MiddleOne_5(int x0 )
79 setArg(0, (void*)EiC_Cfunc[5], int ,x0);
81 EiC_callBack((void*)EiC_Cfunc[5]);
85 static void MiddleOne_6(int x0 )
87 setArg(0, (void*)EiC_Cfunc[6], int ,x0);
89 EiC_callBack((void*)EiC_Cfunc[6]);
93 static void MiddleOne_7(int x0 )
95 setArg(0, (void*)EiC_Cfunc[7], int ,x0);
97 EiC_callBack((void*)EiC_Cfunc[7]);
101 static void MiddleOne_8(int x0 )
103 setArg(0, (void*)EiC_Cfunc[8], int ,x0);
105 EiC_callBack((void*)EiC_Cfunc[8]);
109 static void MiddleOne_9(int x0 )
111 setArg(0, (void*)EiC_Cfunc[9], int ,x0);
113 EiC_callBack((void*)EiC_Cfunc[9]);
117 static void MiddleOne_10(int x0 )
119 setArg(0, (void*)EiC_Cfunc[10], int ,x0);
121 EiC_callBack((void*)EiC_Cfunc[10]);
125 static void MiddleOne_11(int x0 )
127 setArg(0, (void*)EiC_Cfunc[11], int ,x0);
129 EiC_callBack((void*)EiC_Cfunc[11]);
133 static void MiddleOne_12(int x0 )
135 setArg(0, (void*)EiC_Cfunc[12], int ,x0);
137 EiC_callBack((void*)EiC_Cfunc[12]);
141 static void MiddleOne_13(int x0 )
143 setArg(0, (void*)EiC_Cfunc[13], int ,x0);
145 EiC_callBack((void*)EiC_Cfunc[13]);
149 static void MiddleOne_14(int x0 )
151 setArg(0, (void*)EiC_Cfunc[14], int ,x0);
153 EiC_callBack((void*)EiC_Cfunc[14]);
157 static void MiddleOne_15(int x0 )
159 setArg(0, (void*)EiC_Cfunc[15], int ,x0);
161 EiC_callBack((void*)EiC_Cfunc[15]);
165 static void MiddleOne_16(int x0 )
167 setArg(0, (void*)EiC_Cfunc[16], int ,x0);
169 EiC_callBack((void*)EiC_Cfunc[16]);
173 static void MiddleOne_17(int x0 )
175 setArg(0, (void*)EiC_Cfunc[17], int ,x0);
177 EiC_callBack((void*)EiC_Cfunc[17]);
181 static void MiddleOne_18(int x0 )
183 setArg(0, (void*)EiC_Cfunc[18], int ,x0);
185 EiC_callBack((void*)EiC_Cfunc[18]);
189 static void MiddleOne_19(int x0 )
191 setArg(0, (void*)EiC_Cfunc[19], int ,x0);
193 EiC_callBack((void*)EiC_Cfunc[19]);
197 static void MiddleOne_20(int x0 )
199 setArg(0, (void*)EiC_Cfunc[20], int ,x0);
201 EiC_callBack((void*)EiC_Cfunc[20]);
205 static void MiddleOne_21(int x0 )
207 setArg(0, (void*)EiC_Cfunc[21], int ,x0);
209 EiC_callBack((void*)EiC_Cfunc[21]);
213 static void MiddleOne_22(int x0 )
215 setArg(0, (void*)EiC_Cfunc[22], int ,x0);
217 EiC_callBack((void*)EiC_Cfunc[22]);
221 static void MiddleOne_23(int x0 )
223 setArg(0, (void*)EiC_Cfunc[23], int ,x0);
225 EiC_callBack((void*)EiC_Cfunc[23]);
229 static void MiddleOne_24(int x0 )
231 setArg(0, (void*)EiC_Cfunc[24], int ,x0);
233 EiC_callBack((void*)EiC_Cfunc[24]);
237 static void MiddleOne_25(int x0 )
239 setArg(0, (void*)EiC_Cfunc[25], int ,x0);
241 EiC_callBack((void*)EiC_Cfunc[25]);
245 static void MiddleOne_26(int x0 )
247 setArg(0, (void*)EiC_Cfunc[26], int ,x0);
249 EiC_callBack((void*)EiC_Cfunc[26]);
253 static void MiddleOne_27(int x0 )
255 setArg(0, (void*)EiC_Cfunc[27], int ,x0);
257 EiC_callBack((void*)EiC_Cfunc[27]);
261 static void MiddleOne_28(int x0 )
263 setArg(0, (void*)EiC_Cfunc[28], int ,x0);
265 EiC_callBack((void*)EiC_Cfunc[28]);
269 static void MiddleOne_29(int x0 )
271 setArg(0, (void*)EiC_Cfunc[29], int ,x0);
273 EiC_callBack((void*)EiC_Cfunc[29]);
277 static void MiddleOne_30(int x0 )
279 setArg(0, (void*)EiC_Cfunc[30], int ,x0);
281 EiC_callBack((void*)EiC_Cfunc[30]);
285 static void MiddleOne_31(int x0 )
287 setArg(0, (void*)EiC_Cfunc[31], int ,x0);
289 EiC_callBack((void*)EiC_Cfunc[31]);
292 static void (*middle[NUM_SIG])(int) = {
293 MiddleOne_0,MiddleOne_1,MiddleOne_2,MiddleOne_3,MiddleOne_4,MiddleOne_5,MiddleOne_6,MiddleOne_7,
294 MiddleOne_8,MiddleOne_9,MiddleOne_10,MiddleOne_11,MiddleOne_12,MiddleOne_13,MiddleOne_14,
295 MiddleOne_15,MiddleOne_16,MiddleOne_17,MiddleOne_18,MiddleOne_19,MiddleOne_20,MiddleOne_21,
296 MiddleOne_22,MiddleOne_23,MiddleOne_24,MiddleOne_25,MiddleOne_26,MiddleOne_27,MiddleOne_28,
297 MiddleOne_29,MiddleOne_30,MiddleOne_31,};
301 static val_t eic_signal(void)
309 func = (void(*)(int))arg(1,getargs(),ptr_t).p;
310 c = arg(1,getargs(),ptr_t).p;
312 for(i=0;i<NUM_SIG;++i)
313 if(func == EiC_Cfunc[i])
315 if(i==NUM_SIG && (long)func > 1) {
321 if(i<used || (long)func <= 1)
322 func = signal(arg(0,getargs(),int),func);
324 func = signal(arg(0,getargs(),int),middle[i]);
326 /* look for return func */
327 for(i=0;i<NUM_SIG;++i)
328 if(func == middle[i])
331 if(i==NUM_SIG || (i < used || (long)func <= 1))
332 v.p.sp = v.p.p = v.p.ep = (void*)func;
334 c = (code_t*)EiC_Cfunc[i];
336 v.p.sp = v.p.p = v.p.ep = c->parent;
338 v.p.sp = v.p.p = v.p.ep = c;
343 /**********************************/
347 for(used=0;used<NUM_SIG;++used)
348 if(EiC_Cfunc[used] != NULL)
353 EiC_add_builtinfunc("raise",eic_raise);
354 EiC_add_builtinfunc("signal",eic_signal);
357 /**********************************/