Implement RtlInsertHeadList() and RtlInsertTailList()
All checks were successful
ci/woodpecker/push/build Pipeline was successful

This commit is contained in:
Rafal Kupiec 2022-08-16 19:01:23 +02:00
parent ba8b9684ff
commit 14fafa2517
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4
2 changed files with 58 additions and 0 deletions

View File

@ -22,6 +22,16 @@ XTINLINE
VOID
RtlInitializeListHead32(IN PLIST_ENTRY32 ListHead);
XTINLINE
VOID
RtlInsertHeadList(IN OUT PLIST_ENTRY ListHead,
IN OUT PLIST_ENTRY Entry);
XTINLINE
VOID
RtlInsertTailList(IN OUT PLIST_ENTRY ListHead,
IN OUT PLIST_ENTRY Entry);
XTINLINE
BOOLEAN
RtlListEmpty(PLIST_ENTRY ListHead);

View File

@ -45,6 +45,54 @@ RtlInitializeListHead32(IN PLIST_ENTRY32 ListHead)
ListHead->Flink = PtrToUlong(ListHead);
}
/**
* This routine inserts an entry at the head of a double linked list.
*
* @param ListHead
* Pointer to the head of the list.
*
* @param Entry
* Pointer to the entry that will be inserted in the list.
*
* @return This routine does not return any value.
*
* @since XT 1.0
*/
XTINLINE
VOID
RtlInsertHeadList(IN OUT PLIST_ENTRY ListHead,
IN OUT PLIST_ENTRY Entry)
{
Entry->Flink = ListHead->Flink;
Entry->Blink = ListHead;
ListHead->Flink->Blink = Entry;
ListHead->Flink = Entry;
}
/**
* This routine inserts an entry at the tail of a double linked list.
*
* @param ListHead
* Pointer to the head of the list.
*
* @param Entry
* Pointer to the entry that will be inserted in the list.
*
* @return This routine does not return any value.
*
* @since XT 1.0
*/
XTINLINE
VOID
RtlInsertTailList(IN OUT PLIST_ENTRY ListHead,
IN OUT PLIST_ENTRY Entry)
{
Entry->Flink = ListHead;
Entry->Blink = ListHead->Blink;
ListHead->Blink->Flink = Entry;
ListHead->Blink = Entry;
}
/**
* Indicates whether a double linked list structure is empty.
*