mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 01:45:40 +00:00
revert incorrect fix
svn path=/trunk/; revision=11691
This commit is contained in:
parent
c9e0a17bab
commit
4af944d53d
1 changed files with 18 additions and 16 deletions
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue