X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Fworkqueue.c;h=2083bde73a9f70840174032fc046d07079d2b48e;hb=8e5eb8fa755effc602bd44dc7fcdf57942609ae0;hp=9e2c6f6fff7f86a13c4758e443ca99ed3869a9ac;hpb=934d0f535e1929fd90ae0606e77794484aa55284;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/workqueue.c b/KernelLand/Kernel/workqueue.c index 9e2c6f6f..2083bde7 100644 --- a/KernelLand/Kernel/workqueue.c +++ b/KernelLand/Kernel/workqueue.c @@ -36,20 +36,23 @@ void *Workqueue_GetWork(tWorkqueue *Queue) return ret; } + #if 0 + Threads_int_Sleep(THREAD_STAT_QUEUESLEEP, + Queue, 0, + &Queue->Sleeper, NULL, &Queue->Protector); + #endif // Go to sleep SHORTLOCK(&glThreadListLock); us = Threads_RemActive(); us->WaitPointer = Queue; us->Status = THREAD_STAT_QUEUESLEEP; Queue->Sleeper = us; + SHORTREL(&Queue->Protector); SHORTREL(&glThreadListLock); // Yield and sleep - Threads_Yield(); - if(us->Status == THREAD_STAT_QUEUESLEEP) { - // Why are we awake?! - } + Threads_int_WaitForStatusEnd(THREAD_STAT_QUEUESLEEP); us->WaitPointer = NULL; }