/* FUNCTIONS ****************************************************************/
-static NTSTATUS STDCALL
-ExWorkerThreadEntryPoint(PVOID context)
+//static NTSTATUS STDCALL
+static VOID STDCALL
+ExWorkerThreadEntryPoint(IN PVOID context)
/*
* FUNCTION: Entry point for a worker thread
* ARGUMENTS:
&queue->Lock);
if (current!=NULL)
{
- item = CONTAINING_RECORD(current,WORK_QUEUE_ITEM,Entry);
- item->Routine(item->Context);
+ item = CONTAINING_RECORD(current,WORK_QUEUE_ITEM,List);
+ item->WorkerRoutine(item->Parameter);
}
else
{
HIGH_PRIORITY);
}
+/*
+ * @implemented
+ */
VOID STDCALL
ExQueueWorkItem (PWORK_QUEUE_ITEM WorkItem,
WORK_QUEUE_TYPE QueueType)
* QueueType = Queue to insert it in
*/
{
- assert(WorkItem!=NULL);
- ASSERT_IRQL(DISPATCH_LEVEL);
+ assert(WorkItem!=NULL);
+ ASSERT_IRQL(DISPATCH_LEVEL);
/*
* Insert the item in the appropiate queue and wake up any thread
* waiting for something to do
*/
- switch(QueueType)
- {
- case DelayedWorkQueue:
- ExInterlockedInsertTailList(&EiNormalWorkQueue.Head,
- &WorkItem->Entry,
+ switch(QueueType)
+ {
+ case DelayedWorkQueue:
+ ExInterlockedInsertTailList(&EiNormalWorkQueue.Head,
+ &WorkItem->List,
&EiNormalWorkQueue.Lock);
- KeReleaseSemaphore(&EiNormalWorkQueue.Sem,
+ KeReleaseSemaphore(&EiNormalWorkQueue.Sem,
IO_NO_INCREMENT,
1,
FALSE);
break;
- case CriticalWorkQueue:
- ExInterlockedInsertTailList(&EiCriticalWorkQueue.Head,
- &WorkItem->Entry,
+ case CriticalWorkQueue:
+ ExInterlockedInsertTailList(&EiCriticalWorkQueue.Head,
+ &WorkItem->List,
&EiCriticalWorkQueue.Lock);
- KeReleaseSemaphore(&EiCriticalWorkQueue.Sem,
- IO_NO_INCREMENT,
- 1,
- FALSE);
- break;
-
- case HyperCriticalWorkQueue:
- ExInterlockedInsertTailList(&EiHyperCriticalWorkQueue.Head,
- &WorkItem->Entry,
+ KeReleaseSemaphore(&EiCriticalWorkQueue.Sem,
+ IO_NO_INCREMENT,
+ 1,
+ FALSE);
+ break;
+
+ case HyperCriticalWorkQueue:
+ ExInterlockedInsertTailList(&EiHyperCriticalWorkQueue.Head,
+ &WorkItem->List,
&EiHyperCriticalWorkQueue.Lock);
- KeReleaseSemaphore(&EiHyperCriticalWorkQueue.Sem,
+ KeReleaseSemaphore(&EiHyperCriticalWorkQueue.Sem,
IO_NO_INCREMENT,
1,
FALSE);
- break;
-
- }
+ break;
+
+#ifdef __USE_W32API
+ case MaximumWorkQueue:
+ // Unimplemented
+ break;
+#endif
+ }
}
/* EOF */