X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Fworkqueue.c;h=b1a63851fdf27a8c1d87ac92f8e8b792661a3a26;hb=e56e258bdc6345e33454ddb127b2d87c536a0f39;hp=38bf932c179de81a6fc074cfe8b07c1ed3290747;hpb=836dfa601a62228d07c0509d12996e962a073313;p=tpg%2Facess2.git diff --git a/Kernel/workqueue.c b/Kernel/workqueue.c index 38bf932c..b1a63851 100644 --- a/Kernel/workqueue.c +++ b/Kernel/workqueue.c @@ -27,7 +27,7 @@ void *Workqueue_GetWork(tWorkqueue *Queue) if(Queue->Head) { void *ret = Queue->Head; - Queue->Head = *(void**)( (char*)ret + Queue->NextOffset ); + Queue->Head = *( (void**)ret + Queue->NextOffset/sizeof(void*) ); if(Queue->Tail == ret) Queue->Tail = NULL; SHORTREL(&Queue->Protector); @@ -58,17 +58,15 @@ void Workqueue_AddWork(tWorkqueue *Queue, void *Ptr) SHORTLOCK(&Queue->Protector); if( Queue->Tail ) - *(void**)( (char*)Queue->Tail + Queue->NextOffset ) = Ptr; + *( (void**)Queue->Tail + Queue->NextOffset/sizeof(void*) ) = Ptr; else Queue->Head = Ptr; Queue->Tail = Ptr; if( Queue->Sleeper ) { - SHORTLOCK( &glThreadListLock ); if( Queue->Sleeper->Status != THREAD_STAT_ACTIVE ) Threads_AddActive(Queue->Sleeper); - SHORTREL( &glThreadListLock ); Queue->Sleeper = NULL; } SHORTREL(&Queue->Protector);