revert incorrect fix

svn path=/trunk/; revision=11691
This commit is contained in:
Gunnar Dalsnes 2004-11-17 23:55:36 +00:00
parent c9e0a17bab
commit 4af944d53d

View file

@ -1,4 +1,4 @@
/* $Id: work.c,v 1.21 2004/11/15 23:14:36 gdalsnes Exp $ /* $Id: work.c,v 1.22 2004/11/17 23:55:36 gdalsnes Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -36,7 +36,7 @@ typedef struct _WORK_QUEUE
/* /*
* PURPOSE: Worker threads with nothing to do wait on this event * PURPOSE: Worker threads with nothing to do wait on this event
*/ */
KEVENT Event; KSEMAPHORE Sem;
/* /*
* PURPOSE: Thread associated with work queue * PURPOSE: Thread associated with work queue
@ -84,7 +84,7 @@ ExWorkerThreadEntryPoint(IN PVOID context)
} }
else else
{ {
KeWaitForSingleObject((PVOID)&queue->Event, KeWaitForSingleObject((PVOID)&queue->Sem,
Executive, Executive,
KernelMode, KernelMode,
FALSE, FALSE,
@ -102,10 +102,9 @@ static VOID ExInitializeWorkQueue(PWORK_QUEUE WorkQueue,
InitializeListHead(&WorkQueue->Head); InitializeListHead(&WorkQueue->Head);
KeInitializeSpinLock(&WorkQueue->Lock); KeInitializeSpinLock(&WorkQueue->Lock);
KeInitializeEvent(&WorkQueue->Event, KeInitializeSemaphore(&WorkQueue->Sem,
SynchronizationEvent, 0,
FALSE); 256);
for (i=0; i<NUMBER_OF_WORKER_THREADS; i++) for (i=0; i<NUMBER_OF_WORKER_THREADS; i++)
{ {
PsCreateSystemThread(&WorkQueue->Thread[i], PsCreateSystemThread(&WorkQueue->Thread[i],
@ -165,27 +164,30 @@ ExQueueWorkItem (PWORK_QUEUE_ITEM WorkItem,
ExInterlockedInsertTailList(&EiNormalWorkQueue.Head, ExInterlockedInsertTailList(&EiNormalWorkQueue.Head,
&WorkItem->List, &WorkItem->List,
&EiNormalWorkQueue.Lock); &EiNormalWorkQueue.Lock);
KeSetEvent(&EiNormalWorkQueue.Event, KeReleaseSemaphore(&EiNormalWorkQueue.Sem,
IO_NO_INCREMENT, IO_NO_INCREMENT,
FALSE); 1,
FALSE);
break; break;
case CriticalWorkQueue: case CriticalWorkQueue:
ExInterlockedInsertTailList(&EiCriticalWorkQueue.Head, ExInterlockedInsertTailList(&EiCriticalWorkQueue.Head,
&WorkItem->List, &WorkItem->List,
&EiCriticalWorkQueue.Lock); &EiCriticalWorkQueue.Lock);
KeSetEvent(&EiCriticalWorkQueue.Event, KeReleaseSemaphore(&EiCriticalWorkQueue.Sem,
IO_NO_INCREMENT, IO_NO_INCREMENT,
FALSE); 1,
FALSE);
break; break;
case HyperCriticalWorkQueue: case HyperCriticalWorkQueue:
ExInterlockedInsertTailList(&EiHyperCriticalWorkQueue.Head, ExInterlockedInsertTailList(&EiHyperCriticalWorkQueue.Head,
&WorkItem->List, &WorkItem->List,
&EiHyperCriticalWorkQueue.Lock); &EiHyperCriticalWorkQueue.Lock);
KeSetEvent(&EiHyperCriticalWorkQueue.Event, KeReleaseSemaphore(&EiHyperCriticalWorkQueue.Sem,
IO_NO_INCREMENT, IO_NO_INCREMENT,
FALSE); 1,
FALSE);
break; break;
#ifdef __USE_W32API #ifdef __USE_W32API