update for HEAD-2003091401
[reactos.git] / ntoskrnl / ex / list.c
index d4b0e1c..5945f9c 100644 (file)
 
 /* INCLUDES *****************************************************************/
 
+//#ifdef __USE_W32API
+//#define NONAMELESSUNION
+//#endif
 #include <ddk/ntddk.h>
 
 #define NDEBUG
 #include <internal/debug.h>
 
-/* FUNCTIONS *************************************************************/
+static KSPIN_LOCK ExpGlobalListLock = { 0, };
 
+/* FUNCTIONS *************************************************************/
 
-PLIST_ENTRY STDCALL
+/*
+ * @implemented
+ */
+PLIST_ENTRY FASTCALL
 ExInterlockedInsertHeadList(PLIST_ENTRY ListHead,
                            PLIST_ENTRY ListEntry,
                            PKSPIN_LOCK Lock)
@@ -53,7 +60,10 @@ ExInterlockedInsertHeadList(PLIST_ENTRY ListHead,
 }
 
 
-PLIST_ENTRY STDCALL
+/*
+ * @implemented
+ */
+PLIST_ENTRY FASTCALL
 ExInterlockedInsertTailList(PLIST_ENTRY ListHead,
                            PLIST_ENTRY ListEntry,
                            PKSPIN_LOCK Lock)
@@ -85,7 +95,10 @@ ExInterlockedInsertTailList(PLIST_ENTRY ListHead,
 }
 
 
-PLIST_ENTRY STDCALL
+/*
+ * @implemented
+ */
+PLIST_ENTRY FASTCALL
 ExInterlockedRemoveHeadList(PLIST_ENTRY Head,
                            PKSPIN_LOCK Lock)
 /*
@@ -141,6 +154,13 @@ ExInterlockedRemoveTailList(PLIST_ENTRY Head,
 }
 
 
+#ifdef ExInterlockedPopEntrySList
+#undef ExInterlockedPopEntrySList
+#endif
+
+/*
+ * @implemented
+ */
 PSINGLE_LIST_ENTRY FASTCALL
 ExInterlockedPopEntrySList(IN PSLIST_HEADER ListHead,
                           IN PKSPIN_LOCK Lock)
@@ -156,17 +176,24 @@ ExInterlockedPopEntrySList(IN PSLIST_HEADER ListHead,
   KIRQL oldlvl;
 
   KeAcquireSpinLock(Lock,&oldlvl);
-  ret = PopEntryList(&ListHead->s.Next);
+  ret = PopEntryList(&ListHead->Next);
   if (ret)
     {
-      ListHead->s.Depth--;
-      ListHead->s.Sequence++;
+      ListHead->Depth--;
+      ListHead->Sequence++;
     }
   KeReleaseSpinLock(Lock,oldlvl);
   return(ret);
 }
 
 
+#ifdef ExInterlockedPushEntrySList
+#undef ExInterlockedPushEntrySList
+#endif
+
+/*
+ * @implemented
+ */
 PSINGLE_LIST_ENTRY FASTCALL
 ExInterlockedPushEntrySList(IN PSLIST_HEADER ListHead,
                            IN PSINGLE_LIST_ENTRY ListEntry,
@@ -184,16 +211,19 @@ ExInterlockedPushEntrySList(IN PSLIST_HEADER ListHead,
   PSINGLE_LIST_ENTRY ret;
 
   KeAcquireSpinLock(Lock,&oldlvl);
-  ret=ListHead->s.Next.Next;
-  PushEntryList(&ListHead->s.Next,ListEntry);
-  ListHead->s.Depth++;
-  ListHead->s.Sequence++;
+  ret=ListHead->Next.Next;
+  PushEntryList(&ListHead->Next,ListEntry);
+  ListHead->Depth++;
+  ListHead->Sequence++;
   KeReleaseSpinLock(Lock,oldlvl);
   return(ret);
 }
 
 
-PSINGLE_LIST_ENTRY STDCALL
+/*
+ * @implemented
+ */
+PSINGLE_LIST_ENTRY FASTCALL
 ExInterlockedPopEntryList(IN PSINGLE_LIST_ENTRY ListHead,
                          IN PKSPIN_LOCK Lock)
 /*
@@ -214,7 +244,10 @@ ExInterlockedPopEntryList(IN PSINGLE_LIST_ENTRY ListHead,
 }
 
 
-PSINGLE_LIST_ENTRY STDCALL
+/*
+ * @implemented
+ */
+PSINGLE_LIST_ENTRY FASTCALL
 ExInterlockedPushEntryList(IN PSINGLE_LIST_ENTRY ListHead,
                           IN PSINGLE_LIST_ENTRY ListEntry,
                           IN PKSPIN_LOCK Lock)
@@ -238,6 +271,9 @@ ExInterlockedPushEntryList(IN PSINGLE_LIST_ENTRY ListHead,
 }
 
 
+/*
+ * @implemented
+ */
 PLIST_ENTRY FASTCALL
 ExfInterlockedInsertHeadList(IN PLIST_ENTRY ListHead,
                             IN PLIST_ENTRY ListEntry,
@@ -270,6 +306,9 @@ ExfInterlockedInsertHeadList(IN PLIST_ENTRY ListHead,
 }
 
 
+/*
+ * @implemented
+ */
 PLIST_ENTRY FASTCALL
 ExfInterlockedInsertTailList(IN PLIST_ENTRY ListHead,
                             IN PLIST_ENTRY ListEntry,
@@ -302,6 +341,9 @@ ExfInterlockedInsertTailList(IN PLIST_ENTRY ListHead,
 }
 
 
+/*
+ * @implemented
+ */
 PSINGLE_LIST_ENTRY FASTCALL
 ExfInterlockedPopEntryList(IN PSINGLE_LIST_ENTRY ListHead,
                           IN PKSPIN_LOCK Lock)
@@ -323,6 +365,9 @@ ExfInterlockedPopEntryList(IN PSINGLE_LIST_ENTRY ListHead,
 }
 
 
+/*
+ * @implemented
+ */
 PSINGLE_LIST_ENTRY FASTCALL
 ExfInterlockedPushEntryList(IN PSINGLE_LIST_ENTRY ListHead,
                            IN PSINGLE_LIST_ENTRY ListEntry,
@@ -347,6 +392,9 @@ ExfInterlockedPushEntryList(IN PSINGLE_LIST_ENTRY ListHead,
 }
 
 
+/*
+ * @implemented
+ */
 PLIST_ENTRY FASTCALL
 ExfInterlockedRemoveHeadList(IN PLIST_ENTRY Head,
                             IN PKSPIN_LOCK Lock)
@@ -374,4 +422,30 @@ ExfInterlockedRemoveHeadList(IN PLIST_ENTRY Head,
   return(ret);
 }
 
+
+/*
+ * @implemented
+ */
+PSLIST_ENTRY
+FASTCALL
+InterlockedPopEntrySList(IN PSLIST_HEADER ListHead)
+{
+  return (PSLIST_ENTRY) ExInterlockedPopEntrySList(ListHead,
+    &ExpGlobalListLock);
+}
+
+
+/*
+ * @implemented
+ */
+PSLIST_ENTRY
+FASTCALL
+InterlockedPushEntrySList(IN PSLIST_HEADER ListHead,
+  IN PSLIST_ENTRY ListEntry)
+{
+  return (PSLIST_ENTRY) ExInterlockedPushEntrySList(ListHead,
+    ListEntry,
+    &ExpGlobalListLock);
+}
+
 /* EOF */