diff options
author | rsc <devnull@localhost> | 2004-04-21 04:48:25 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2004-04-21 04:48:25 +0000 |
commit | 175b8a534ae5729ac10ea793410a40bfa4a30608 (patch) | |
tree | 84bb108fcf065ad2e4c4f8848a7e7d2ed14c317d /src/lib9/notify.c | |
parent | ac0e2db600593d5b30550453b78874bfa0611751 (diff) | |
download | plan9port-175b8a534ae5729ac10ea793410a40bfa4a30608.tar.gz plan9port-175b8a534ae5729ac10ea793410a40bfa4a30608.tar.bz2 plan9port-175b8a534ae5729ac10ea793410a40bfa4a30608.zip |
No more malloc or lock inside signal handlers.
Diffstat (limited to 'src/lib9/notify.c')
-rw-r--r-- | src/lib9/notify.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/lib9/notify.c b/src/lib9/notify.c index 12edb0e4..79a5e621 100644 --- a/src/lib9/notify.c +++ b/src/lib9/notify.c @@ -49,7 +49,7 @@ notifysigf(int sig) char tmp[64]; Uproc *up; - up = _p9uproc(); + up = _p9uproc(1); v = p9setjmp(up->notejb); if(v == 0 && notifyf) (*notifyf)(nil, _p9sigstr(sig, tmp)); @@ -68,6 +68,7 @@ notify(void (*f)(void*, char*)) int i; struct sigaction sa; + _p9uproc(0); memset(&sa, 0, sizeof sa); if(f == 0) sa.sa_handler = SIG_DFL; @@ -90,7 +91,7 @@ noted(int v) { Uproc *up; - up = _p9uproc(); + up = _p9uproc(1); p9longjmp(up->notejb, v==NCONT ? 2 : 1); abort(); return 0; |