aboutsummaryrefslogtreecommitdiff
path: root/src/lib9/notify.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2004-04-21 04:48:25 +0000
committerrsc <devnull@localhost>2004-04-21 04:48:25 +0000
commit175b8a534ae5729ac10ea793410a40bfa4a30608 (patch)
tree84bb108fcf065ad2e4c4f8848a7e7d2ed14c317d /src/lib9/notify.c
parentac0e2db600593d5b30550453b78874bfa0611751 (diff)
downloadplan9port-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.c5
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;