GPUSuitabilityEst/code/kernel_module/data_structure/list_entry.c
2026-07-20 12:30:11 +01:00

46 lines
1.1 KiB
C

#include "list_entry.h"
void InitializeListHead(PLIST_ENTRY ListHead) {
ListHead->flink = ListHead;
ListHead->blink = ListHead;
}
int IsListEmpty(const PLIST_ENTRY ListHead) {
return ListHead->flink == ListHead;
}
void InsertHeadList(PLIST_ENTRY ListHead, PLIST_ENTRY Entry) {
Entry->flink = ListHead->flink;
Entry->blink = ListHead;
ListHead->flink->blink = Entry;
ListHead->flink = Entry;
}
void InsertTailList(PLIST_ENTRY ListHead, PLIST_ENTRY Entry) {
Entry->blink = ListHead->blink;
Entry->flink = ListHead;
ListHead->blink->flink = Entry;
ListHead->blink = Entry;
}
void RemoveEntryList(PLIST_ENTRY Entry) {
Entry->blink->flink = Entry->flink;
Entry->flink->blink = Entry->blink;
Entry->flink = Entry;
Entry->blink = Entry;
}
PLIST_ENTRY RemoveHeadList(PLIST_ENTRY ListHead) {
if (IsListEmpty(ListHead)) return NULL;
PLIST_ENTRY first = ListHead->flink;
RemoveEntryList(first);
return first;
}
PLIST_ENTRY RemoveTailList(PLIST_ENTRY ListHead) {
if (IsListEmpty(ListHead)) return NULL;
PLIST_ENTRY last = ListHead->blink;
RemoveEntryList(last);
return last;
}