diff options
author | rsc <devnull@localhost> | 2004-12-25 21:56:33 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2004-12-25 21:56:33 +0000 |
commit | 1544f90960275dc9211bde30329c3258e0e1bf38 (patch) | |
tree | f55e7a73c03aaa24daa7cc2ad02822b921c477f9 /src/libthread/kill.c | |
parent | 7788fd54094693384ef5c92c475656dba8819feb (diff) | |
download | plan9port-1544f90960275dc9211bde30329c3258e0e1bf38.tar.gz plan9port-1544f90960275dc9211bde30329c3258e0e1bf38.tar.bz2 plan9port-1544f90960275dc9211bde30329c3258e0e1bf38.zip |
New thread library
Diffstat (limited to 'src/libthread/kill.c')
-rw-r--r-- | src/libthread/kill.c | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/src/libthread/kill.c b/src/libthread/kill.c deleted file mode 100644 index 648bd66e..00000000 --- a/src/libthread/kill.c +++ /dev/null @@ -1,90 +0,0 @@ -#include <u.h> -#include <signal.h> -#include "threadimpl.h" - -static void tinterrupt(Proc*, Thread*); - -static void -threadxxxgrp(int grp, int dokill) -{ - Proc *p; - Thread *t; - - lock(&_threadpq.lock); - for(p=_threadpq.head; p; p=p->next){ - lock(&p->lock); - for(t=p->threads.head; t; t=t->nextt) - if(t->grp == grp){ - if(dokill) - t->moribund = 1; - tinterrupt(p, t); - } - unlock(&p->lock); - } - unlock(&_threadpq.lock); - _threadbreakrendez(); -} - -static void -threadxxx(int id, int dokill) -{ - Proc *p; - Thread *t; - - lock(&_threadpq.lock); - for(p=_threadpq.head; p; p=p->next){ - lock(&p->lock); - for(t=p->threads.head; t; t=t->nextt) - if(t->id == id){ - if(dokill) - t->moribund = 1; - tinterrupt(p, t); - unlock(&p->lock); - unlock(&_threadpq.lock); - _threadbreakrendez(); - return; - } - unlock(&p->lock); - } - unlock(&_threadpq.lock); - _threaddebug(DBGNOTE, "Can't find thread to kill"); - return; -} - -void -threadkillgrp(int grp) -{ - threadxxxgrp(grp, 1); -} - -void -threadkill(int id) -{ - threadxxx(id, 1); -} - -void -threadintgrp(int grp) -{ - threadxxxgrp(grp, 0); -} - -void -threadint(int id) -{ - threadxxx(id, 0); -} - -static void -tinterrupt(Proc *p, Thread *t) -{ - switch(t->state){ - case Running: - kill(p->pid, SIGINT); - // postnote(PNPROC, p->pid, "threadint"); - break; - case Rendezvous: - _threadflagrendez(t); - break; - } -} |