update for HEAD-2003091401
[reactos.git] / ntoskrnl / ex / work.c
index 0d8ea7d..98e370b 100644 (file)
@@ -60,8 +60,9 @@ WORK_QUEUE EiHyperCriticalWorkQueue;
 
 /* 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:
@@ -81,8 +82,8 @@ ExWorkerThreadEntryPoint(PVOID context)
                                              &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
          {
@@ -138,6 +139,9 @@ VOID ExInitializeWorkerThreads(VOID)
                         HIGH_PRIORITY);
 }
 
+/*
+ * @implemented
+ */
 VOID STDCALL
 ExQueueWorkItem (PWORK_QUEUE_ITEM      WorkItem,
                 WORK_QUEUE_TYPE                QueueType)
@@ -149,46 +153,51 @@ ExQueueWorkItem (PWORK_QUEUE_ITEM WorkItem,
  *        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 */