Basic support for double linked lists
All checks were successful
ci/woodpecker/push/build Pipeline was successful
All checks were successful
ci/woodpecker/push/build Pipeline was successful
This commit is contained in:
parent
96871fd042
commit
f67bc808cc
@ -10,6 +10,7 @@ include_directories(
|
|||||||
list(APPEND XTKLIB_SOURCE
|
list(APPEND XTKLIB_SOURCE
|
||||||
${XTKLIB_SOURCE_DIR}/hl/cport.c
|
${XTKLIB_SOURCE_DIR}/hl/cport.c
|
||||||
${XTKLIB_SOURCE_DIR}/hl/${ARCH}/cpufunc.c
|
${XTKLIB_SOURCE_DIR}/hl/${ARCH}/cpufunc.c
|
||||||
|
${XTKLIB_SOURCE_DIR}/rtl/plist.c
|
||||||
${XTKLIB_SOURCE_DIR}/rtl/widestr.c)
|
${XTKLIB_SOURCE_DIR}/rtl/widestr.c)
|
||||||
|
|
||||||
# Add library
|
# Add library
|
||||||
|
@ -10,9 +10,22 @@
|
|||||||
#define __XTKLIB_LIBRTL_H
|
#define __XTKLIB_LIBRTL_H
|
||||||
|
|
||||||
#include "xtdefs.h"
|
#include "xtdefs.h"
|
||||||
|
#include "xtstruct.h"
|
||||||
#include "xttypes.h"
|
#include "xttypes.h"
|
||||||
|
|
||||||
|
|
||||||
|
XTINLINE
|
||||||
|
VOID
|
||||||
|
RtlInitializeListHead(IN PLIST_ENTRY ListHead);
|
||||||
|
|
||||||
|
XTINLINE
|
||||||
|
VOID
|
||||||
|
RtlInitializeListHead32(IN PLIST_ENTRY32 ListHead);
|
||||||
|
|
||||||
|
XTINLINE
|
||||||
|
BOOLEAN
|
||||||
|
RtlListEmpty(PLIST_ENTRY ListHead);
|
||||||
|
|
||||||
INT
|
INT
|
||||||
RtlWideStringCompare(IN CONST PWCHAR String1,
|
RtlWideStringCompare(IN CONST PWCHAR String1,
|
||||||
IN CONST PWCHAR String2,
|
IN CONST PWCHAR String2,
|
||||||
|
63
sdk/xtklib/rtl/plist.c
Normal file
63
sdk/xtklib/rtl/plist.c
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
/**
|
||||||
|
* PROJECT: ExectOS
|
||||||
|
* COPYRIGHT: See COPYING.md in the top level directory
|
||||||
|
* FILE: sdk/xtklib/rtl/plist.c
|
||||||
|
* DESCRIPTION: Linked list manipulation routines
|
||||||
|
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <xtkmapi.h>
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This routine initializes a structure representing the head of a double-linked list.
|
||||||
|
*
|
||||||
|
* @param ListHead
|
||||||
|
* Pointer to a structure that serves as the list header.
|
||||||
|
*
|
||||||
|
* @return This routine does not return any value.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTINLINE
|
||||||
|
VOID
|
||||||
|
RtlInitializeListHead(IN PLIST_ENTRY ListHead)
|
||||||
|
{
|
||||||
|
ListHead->Blink = ListHead;
|
||||||
|
ListHead->Flink = ListHead;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This routine initializes a structure representing the head of a 32bit double-linked list.
|
||||||
|
*
|
||||||
|
* @param ListHead
|
||||||
|
* Pointer to a structure that serves as the list header.
|
||||||
|
*
|
||||||
|
* @return This routine does not return any value.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTINLINE
|
||||||
|
VOID
|
||||||
|
RtlInitializeListHead32(IN PLIST_ENTRY32 ListHead)
|
||||||
|
{
|
||||||
|
ListHead->Blink = PtrToUlong(ListHead);
|
||||||
|
ListHead->Flink = PtrToUlong(ListHead);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates whether a doubly linked list structure is empty.
|
||||||
|
*
|
||||||
|
* @param ListHead
|
||||||
|
* Pointer to a structure that represents the head of the list.
|
||||||
|
*
|
||||||
|
* @return TRUE if there are currently no entries in the list or FALSE otherwise.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTINLINE
|
||||||
|
BOOLEAN
|
||||||
|
RtlListEmpty(PLIST_ENTRY ListHead)
|
||||||
|
{
|
||||||
|
return (ListHead->Flink == ListHead);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user