Blame


1 cf4f3eaf 2004-11-08 devnull /*
2 cf4f3eaf 2004-11-08 devnull * Implement threadexitsall by sending a signal to every proc.
3 cf4f3eaf 2004-11-08 devnull *
4 cf4f3eaf 2004-11-08 devnull * To be included from another C file (e.g., Linux-clone.c).
5 cf4f3eaf 2004-11-08 devnull */
6 cf4f3eaf 2004-11-08 devnull
7 cf4f3eaf 2004-11-08 devnull void
8 cf4f3eaf 2004-11-08 devnull _threadexitallproc(char *exitstr)
9 cf4f3eaf 2004-11-08 devnull {
10 cf4f3eaf 2004-11-08 devnull Proc *p;
11 cf4f3eaf 2004-11-08 devnull int mypid;
12 cf4f3eaf 2004-11-08 devnull
13 cf4f3eaf 2004-11-08 devnull mypid = getpid();
14 cf4f3eaf 2004-11-08 devnull lock(&_threadpq.lock);
15 cf4f3eaf 2004-11-08 devnull for(p=_threadpq.head; p; p=p->next)
16 cf4f3eaf 2004-11-08 devnull if(p->pid > 1 && p->pid != mypid)
17 cf4f3eaf 2004-11-08 devnull kill(p->pid, SIGUSR2);
18 cf4f3eaf 2004-11-08 devnull exits(exitstr);
19 cf4f3eaf 2004-11-08 devnull }
20 cf4f3eaf 2004-11-08 devnull
21 cf4f3eaf 2004-11-08 devnull void
22 cf4f3eaf 2004-11-08 devnull _threadexitproc(char *exitstr)
23 cf4f3eaf 2004-11-08 devnull {
24 cf4f3eaf 2004-11-08 devnull _exits(exitstr);
25 cf4f3eaf 2004-11-08 devnull }