X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Fworkqueue.c;h=3e35b069ead04355075ee4eb9b0b8953e6ea60a4;hb=48f6d3ace33f15e2c46fb4c7a79f1f647e446e33;hp=9e2c6f6fff7f86a13c4758e443ca99ed3869a9ac;hpb=934d0f535e1929fd90ae0606e77794484aa55284;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/workqueue.c b/KernelLand/Kernel/workqueue.c index 9e2c6f6f..3e35b069 100644 --- a/KernelLand/Kernel/workqueue.c +++ b/KernelLand/Kernel/workqueue.c @@ -20,8 +20,6 @@ void Workqueue_Init(tWorkqueue *Queue, const char *Name, size_t NextOfset) void *Workqueue_GetWork(tWorkqueue *Queue) { - tThread *us; - for( ;; ) { // Check for work @@ -36,22 +34,9 @@ void *Workqueue_GetWork(tWorkqueue *Queue) return ret; } - // 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?! - } - - us->WaitPointer = NULL; + Threads_int_Sleep(THREAD_STAT_QUEUESLEEP, + Queue, 0, + &Queue->Sleeper, NULL, &Queue->Protector); } }