forked from xt-sys/exectos
		
	Basic support for double linked lists
This commit is contained in:
		@@ -10,6 +10,7 @@ include_directories(
 | 
			
		||||
list(APPEND XTKLIB_SOURCE
 | 
			
		||||
    ${XTKLIB_SOURCE_DIR}/hl/cport.c
 | 
			
		||||
    ${XTKLIB_SOURCE_DIR}/hl/${ARCH}/cpufunc.c
 | 
			
		||||
    ${XTKLIB_SOURCE_DIR}/rtl/plist.c
 | 
			
		||||
    ${XTKLIB_SOURCE_DIR}/rtl/widestr.c)
 | 
			
		||||
 | 
			
		||||
# Add library
 | 
			
		||||
 
 | 
			
		||||
@@ -10,9 +10,22 @@
 | 
			
		||||
#define __XTKLIB_LIBRTL_H
 | 
			
		||||
 | 
			
		||||
#include "xtdefs.h"
 | 
			
		||||
#include "xtstruct.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
 | 
			
		||||
RtlWideStringCompare(IN CONST PWCHAR String1,
 | 
			
		||||
                     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);
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user