aboutsummaryrefslogtreecommitdiff
path: root/src/libthread/kill.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libthread/kill.c')
-rw-r--r--src/libthread/kill.c90
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;
- }
-}