aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@swtch.com>2020-12-30 08:41:01 -0500
committerRuss Cox <rsc@swtch.com>2020-12-30 08:41:01 -0500
commit91ececc99741b3111c69d455bc928e871b15d766 (patch)
tree09ff04c0001f812aa7a0464ca5119ab0acc40375
parent4692dd4786f8847494d3f020bc3c05ba210adc0d (diff)
downloadplan9port-91ececc99741b3111c69d455bc928e871b15d766.tar.gz
plan9port-91ececc99741b3111c69d455bc928e871b15d766.tar.bz2
plan9port-91ececc99741b3111c69d455bc928e871b15d766.zip
libthread: drop schedlock
Having two locks in the proc was causing deadlocks.
-rw-r--r--src/libthread/thread.c2
-rw-r--r--src/libthread/threadimpl.h1
2 files changed, 1 insertions, 2 deletions
diff --git a/src/libthread/thread.c b/src/libthread/thread.c
index d72bf896..79e0ec71 100644
--- a/src/libthread/thread.c
+++ b/src/libthread/thread.c
@@ -281,7 +281,7 @@ static void
pthreadwakeupschedlocked(Proc *p, _Thread *self, _Thread *t)
{
_threaddebug(self, "pthreadwakeupschedlocked %p %d", p, t->id);;
- t->schedrend.l = &p->schedlock;
+ t->schedrend.l = &p->lock;
p->schedthread = t;
_procwakeup(&t->schedrend);
}
diff --git a/src/libthread/threadimpl.h b/src/libthread/threadimpl.h
index 9eddba21..fd40f252 100644
--- a/src/libthread/threadimpl.h
+++ b/src/libthread/threadimpl.h
@@ -88,7 +88,6 @@ struct Proc
uint nthread;
uint sysproc;
_Procrendez runrend;
- Lock schedlock;
_Thread *schedthread;
void *udata;
Jmp sigjmp;