Last change
on this file since 373 was 352, checked in by coas-nagasima, 6 years ago |
arm向けASP3版ECNLを追加
|
-
Property svn:eol-style
set to
native
-
Property svn:mime-type
set to
text/x-csrc;charset=UTF-8
|
File size:
627 bytes
|
Rev | Line | |
---|
[352] | 1 | #include <signal.h>
|
---|
| 2 |
|
---|
| 3 | void (*sigset(int sig, void (*handler)(int)))(int)
|
---|
| 4 | {
|
---|
| 5 | struct sigaction sa, sa_old;
|
---|
| 6 | sigset_t mask;
|
---|
| 7 |
|
---|
| 8 | sigemptyset(&mask);
|
---|
| 9 | if (sigaddset(&mask, sig) < 0)
|
---|
| 10 | return SIG_ERR;
|
---|
| 11 |
|
---|
| 12 | if (handler == SIG_HOLD) {
|
---|
| 13 | if (sigaction(sig, 0, &sa_old) < 0)
|
---|
| 14 | return SIG_ERR;
|
---|
| 15 | if (sigprocmask(SIG_BLOCK, &mask, &mask) < 0)
|
---|
| 16 | return SIG_ERR;
|
---|
| 17 | } else {
|
---|
| 18 | sa.sa_handler = handler;
|
---|
| 19 | sa.sa_flags = 0;
|
---|
| 20 | sigemptyset(&sa.sa_mask);
|
---|
| 21 | if (sigaction(sig, &sa, &sa_old) < 0)
|
---|
| 22 | return SIG_ERR;
|
---|
| 23 | if (sigprocmask(SIG_UNBLOCK, &mask, &mask) < 0)
|
---|
| 24 | return SIG_ERR;
|
---|
| 25 | }
|
---|
| 26 | return sigismember(&mask, sig) ? SIG_HOLD : sa_old.sa_handler;
|
---|
| 27 | }
|
---|
Note:
See
TracBrowser
for help on using the repository browser.