commit - 230ead2fbe90864d309218048d5ad13070d536fa
commit + 15cd8255b55fdca71e8054e874ffeb077a59b978
blob - 84e21717f6a40d99c268546f327cfd1e6bf4ed4c
blob + 1894259bfb3840271eac67659e3ab54dd6606a04
--- src/libthread/thread.c
+++ src/libthread/thread.c
_threadswitch();
if(l->owner != (*threadnow)()){
- fprint(2, "qlock pc=0x%lux owner=%p self=%p oops\n", pc, l->owner, (*threadnow)());
+ fprint(2, "%s: qlock pc=0x%lux owner=%p self=%p oops\n",
+ argv0, pc, l->owner, (*threadnow)());
abort();
}
//print("qlock wakeup %p @%#x by %p\n", l, pc, (*threadnow)());
{
lock(&l->l);
//print("qlock unlock %p @%#x by %p (owner %p)\n", l, pc, (*threadnow)(), l->owner);
- if(l->owner == nil){
- fprint(2, "qunlock pc=0x%lux owner=%p self=%p oops\n",
- pc, l->owner, (*threadnow)());
- abort();
+ if(l->owner != (*threadnow)()){
+ fprint(2, "%s: qunlock pc=0x%lux owner=%p self=%p oops\n",
+ argv0, pc, l->owner, (*threadnow)());
}
if((l->owner = l->waiting.head) != nil){
delthread(&l->waiting, l->owner);
mainstacksize = 65536;
_threadcreate(p, threadmainstart, nil, mainstacksize);
scheduler(p);
- threaddaemonize();
+ _threaddaemonize();
_threadpexit();
+ return 0;
}
/*
_threadprocstail = p->prev;
unlock(&_threadprocslock);
}
+
+/*
+ * notify - for now just use the usual mechanisms
+ */
+void
+threadnotify(int (*f)(void*, char*), int in)
+{
+ atnotify(f, in);
+}