summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/cmd/ip/gping.c11
-rw-r--r--sys/src/cmd/stats.c9
-rw-r--r--sys/src/libdraw/event.c40
3 files changed, 21 insertions, 39 deletions
diff --git a/sys/src/cmd/ip/gping.c b/sys/src/cmd/ip/gping.c
index ad5d89172..ebc8d57ac 100644
--- a/sys/src/cmd/ip/gping.c
+++ b/sys/src/cmd/ip/gping.c
@@ -630,16 +630,6 @@ lostval(Machine *m, long *v, long *vmax, long *mark)
*vmax = 100;
}
-jmp_buf catchalarm;
-
-void
-alarmed(void *a, char *s)
-{
- if(strcmp(s, "alarm") == 0)
- notejmp(a, catchalarm, 1);
- noted(NDFLT);
-}
-
void
usage(void)
{
@@ -1030,7 +1020,6 @@ main(int argc, char *argv[])
}
colinit();
einit(Emouse);
- notify(nil);
startproc(mouseproc, 0);
display->locking = 1; /* tell library we're using the display lock */
diff --git a/sys/src/cmd/stats.c b/sys/src/cmd/stats.c
index fec34af03..2b70c8ad2 100644
--- a/sys/src/cmd/stats.c
+++ b/sys/src/cmd/stats.c
@@ -710,12 +710,12 @@ initmach(Machine *m, char *name)
jmp_buf catchalarm;
-void
+int
alarmed(void *a, char *s)
{
if(strcmp(s, "alarm") == 0)
notejmp(a, catchalarm, 1);
- noted(NDFLT);
+ return 0;
}
int
@@ -781,7 +781,7 @@ readmach(Machine *m, int init)
eresized(0);
}
if(m->remote){
- notify(alarmed);
+ atnotify(alarmed, 1);
alarm(5000);
}
if(needswap(init) && loadbuf(m, &m->swapfd) && readswap(m, a))
@@ -809,7 +809,7 @@ readmach(Machine *m, int init)
m->temp[n] = a[0];
if(m->remote){
alarm(0);
- notify(nil);
+ atnotify(alarmed, 0);
}
}
@@ -1410,7 +1410,6 @@ main(int argc, char *argv[])
}
colinit();
einit(Emouse);
- notify(nil);
startproc(mouseproc, Mouseproc);
pids[Mainproc] = getpid();
display->locking = 1; /* tell library we're using the display lock */
diff --git a/sys/src/libdraw/event.c b/sys/src/libdraw/event.c
index bb4b60179..8b0ad5e64 100644
--- a/sys/src/libdraw/event.c
+++ b/sys/src/libdraw/event.c
@@ -346,39 +346,33 @@ eforkslave(ulong key)
}
static int
-enote(void *v, char *s)
+enote(void*, char *s)
{
- char t[1];
int i, pid;
- USED(v, s);
- pid = getpid();
- if(pid != parentpid){
- for(i=0; i<nslave; i++){
- if(pid == eslave[i].pid){
- t[0] = MAXSLAVE;
- write(epipe[1], t, 1);
- break;
- }
- }
+ if(strncmp(s, "sys:", 4) == 0 || strcmp(s, "alarm") == 0)
return 0;
- }
- close(epipe[0]);
- epipe[0] = -1;
- close(epipe[1]);
- epipe[1] = -1;
- for(i=0; i<nslave; i++){
+ pid = getpid();
+ for(i=0; i<nslave; i++)
if(pid == eslave[i].pid)
- continue; /* don't kill myself */
- postnote(PNPROC, eslave[i].pid, "die");
- }
- return 0;
+ return 1;
+ if(pid != parentpid)
+ return 0;
+ exits("killed");
+ return 1;
}
static void
ekill(void)
{
- enote(0, 0);
+ int i, pid;
+
+ pid = getpid();
+ for(i=0; i<nslave; i++){
+ if(pid == eslave[i].pid)
+ continue; /* don't kill myself */
+ postnote(PNPROC, eslave[i].pid, "die");
+ }
}
Mouse