/* 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)
}
-PLIST_ENTRY STDCALL
+/*
+ * @implemented
+ */
+PLIST_ENTRY FASTCALL
ExInterlockedInsertTailList(PLIST_ENTRY ListHead,
PLIST_ENTRY ListEntry,
PKSPIN_LOCK Lock)
}
-PLIST_ENTRY STDCALL
+/*
+ * @implemented
+ */
+PLIST_ENTRY FASTCALL
ExInterlockedRemoveHeadList(PLIST_ENTRY Head,
PKSPIN_LOCK Lock)
/*
}
+#ifdef ExInterlockedPopEntrySList
+#undef ExInterlockedPopEntrySList
+#endif
+
+/*
+ * @implemented
+ */
PSINGLE_LIST_ENTRY FASTCALL
ExInterlockedPopEntrySList(IN PSLIST_HEADER ListHead,
IN PKSPIN_LOCK Lock)
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,
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)
/*
}
-PSINGLE_LIST_ENTRY STDCALL
+/*
+ * @implemented
+ */
+PSINGLE_LIST_ENTRY FASTCALL
ExInterlockedPushEntryList(IN PSINGLE_LIST_ENTRY ListHead,
IN PSINGLE_LIST_ENTRY ListEntry,
IN PKSPIN_LOCK Lock)
}
+/*
+ * @implemented
+ */
PLIST_ENTRY FASTCALL
ExfInterlockedInsertHeadList(IN PLIST_ENTRY ListHead,
IN PLIST_ENTRY ListEntry,
}
+/*
+ * @implemented
+ */
PLIST_ENTRY FASTCALL
ExfInterlockedInsertTailList(IN PLIST_ENTRY ListHead,
IN PLIST_ENTRY ListEntry,
}
+/*
+ * @implemented
+ */
PSINGLE_LIST_ENTRY FASTCALL
ExfInterlockedPopEntryList(IN PSINGLE_LIST_ENTRY ListHead,
IN PKSPIN_LOCK Lock)
}
+/*
+ * @implemented
+ */
PSINGLE_LIST_ENTRY FASTCALL
ExfInterlockedPushEntryList(IN PSINGLE_LIST_ENTRY ListHead,
IN PSINGLE_LIST_ENTRY ListEntry,
}
+/*
+ * @implemented
+ */
PLIST_ENTRY FASTCALL
ExfInterlockedRemoveHeadList(IN PLIST_ENTRY Head,
IN PKSPIN_LOCK Lock)
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 */