Commit Diff


commit - 230ead2fbe90864d309218048d5ad13070d536fa
commit + 15cd8255b55fdca71e8054e874ffeb077a59b978
blob - 84e21717f6a40d99c268546f327cfd1e6bf4ed4c
blob + 1894259bfb3840271eac67659e3ab54dd6606a04
--- src/libthread/thread.c
+++ src/libthread/thread.c
@@ -317,7 +317,8 @@ threadqlock(QLock *l, int block, ulong pc)
 	_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)());
@@ -329,10 +330,9 @@ threadqunlock(QLock *l, ulong pc)
 {
 	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);
@@ -505,8 +505,9 @@ main(int argc, char **argv)
 		mainstacksize = 65536;
 	_threadcreate(p, threadmainstart, nil, mainstacksize);
 	scheduler(p);
-	threaddaemonize();
+	_threaddaemonize();
 	_threadpexit();
+	return 0;
 }
 
 /*
@@ -606,3 +607,12 @@ delproc(Proc *p)
 		_threadprocstail = p->prev;
 	unlock(&_threadprocslock);
 }
+
+/* 
+ * notify - for now just use the usual mechanisms
+ */
+void
+threadnotify(int (*f)(void*, char*), int in)
+{
+	atnotify(f, in);
+}