2 Copyright © 2012, The AROS Development Team. All rights reserved.
6 #include <proto/exec.h>
13 #include "__arosc_privdata.h"
16 struct signal_func_data
*__sig_getfuncdata(int signum
)
18 struct aroscbase
*aroscbase
= __GM_GetBase();
21 if (signum
< SIGHUP
|| signum
> SIGRTMAX
)
27 if (aroscbase
->acb_sigfunc_array
== NULL
)
29 aroscbase
->acb_sigfunc_array
=
30 AllocPooled(aroscbase
->acb_internalpool
,
31 SIGRTMAX
*sizeof(struct signal_func_data
)
34 if (!aroscbase
->acb_sigfunc_array
)
40 for (i
= 0; i
< SIGRTMAX
; i
++)
42 aroscbase
->acb_sigfunc_array
[i
].sigfunc
= SIG_DFL
;
43 aroscbase
->acb_sigfunc_array
[i
].flags
= 0;
47 return &aroscbase
->acb_sigfunc_array
[signum
-1];
50 /* Handler for SIG_DFL */
51 void __sig_default(int signum
)
53 struct aroscbase
*aroscbase
= __GM_GetBase();
58 fprintf(stderr
, "Program aborted.\n");
62 fprintf(stderr
, "Program terminated.\n");
66 fprintf(stderr
, "Caught signal %d; aborting...\n", signum
);
70 aroscbase
->acb_flags
|= ABNORMAL_EXIT
;
71 longjmp(__arosc_startup_jmp_buf
, 20);
73 assert(0); /* Should not be reached */