diff --git a/sdk/xtdk/amd64/rtlfuncs.h b/sdk/xtdk/amd64/rtlfuncs.h index 86af1e1..fbd79b3 100644 --- a/sdk/xtdk/amd64/rtlfuncs.h +++ b/sdk/xtdk/amd64/rtlfuncs.h @@ -14,9 +14,5 @@ #include -XTAPI -VOID -RtlGetStackLimits(OUT PULONG_PTR StackBase, - OUT PULONG_PTR StackLimit); #endif /* __XTDK_AMD64_RTLFUNCS_H */ diff --git a/sdk/xtdk/i686/rtlfuncs.h b/sdk/xtdk/i686/rtlfuncs.h index bda06cf..08ef4f2 100644 --- a/sdk/xtdk/i686/rtlfuncs.h +++ b/sdk/xtdk/i686/rtlfuncs.h @@ -14,9 +14,5 @@ #include -XTAPI -VOID -RtlGetStackLimits(OUT PULONG_PTR StackBase, - OUT PULONG_PTR StackLimit); #endif /* __XTDK_I686_RTLFUNCS_H */ diff --git a/sdk/xtdk/rtlfuncs.h b/sdk/xtdk/rtlfuncs.h index 92d9889..cf4f980 100644 --- a/sdk/xtdk/rtlfuncs.h +++ b/sdk/xtdk/rtlfuncs.h @@ -14,198 +14,6 @@ #include -XTFASTCALL -CHAR -RtlAtomicAnd8(IN VOLATILE PCHAR Address, - IN CHAR Mask); - -XTFASTCALL -SHORT -RtlAtomicAnd16(IN VOLATILE PSHORT Address, - IN SHORT Mask); - -XTFASTCALL -LONG -RtlAtomicAnd32(IN VOLATILE PLONG Address, - IN LONG Mask); - -XTFASTCALL -LONGLONG -RtlAtomicAnd64(IN VOLATILE PLONGLONG Address, - IN LONGLONG Mask); - -XTFASTCALL -CHAR -RtlAtomicCompareExchange8(IN VOLATILE PCHAR Address, - IN CHAR Comperand, - IN CHAR Exchange); - -XTFASTCALL -SHORT -RtlAtomicCompareExchange16(IN VOLATILE PSHORT Address, - IN SHORT Comperand, - IN SHORT Exchange); - -XTFASTCALL -LONG -RtlAtomicCompareExchange32(IN VOLATILE PLONG Address, - IN LONG Comperand, - IN LONG Exchange); - -XTFASTCALL -LONGLONG -RtlAtomicCompareExchange64(IN VOLATILE PLONGLONG Address, - IN LONGLONG Comperand, - IN LONGLONG Exchange); - -XTFASTCALL -PVOID -RtlAtomicCompareExchangePointer(IN VOLATILE PVOID *Address, - IN PVOID Comperand, - IN PVOID Exchange); - -XTFASTCALL -CHAR -RtlAtomicDecrement8(IN VOLATILE PCHAR Address); - -XTFASTCALL -SHORT -RtlAtomicDecrement16(IN VOLATILE PSHORT Address); - -XTFASTCALL -LONG -RtlAtomicDecrement32(IN VOLATILE PLONG Address); - -XTFASTCALL -LONGLONG -RtlAtomicDecrement64(IN VOLATILE PLONGLONG Address); - -XTFASTCALL -CHAR -RtlAtomicExchange8(IN VOLATILE PCHAR Address, - IN CHAR Exchange); - -XTFASTCALL -SHORT -RtlAtomicExchange16(IN VOLATILE PSHORT Address, - IN SHORT Exchange); - -XTFASTCALL -LONG -RtlAtomicExchange32(IN VOLATILE PLONG Address, - IN LONG Exchange); - -XTFASTCALL -LONGLONG -RtlAtomicExchange64(IN VOLATILE PLONGLONG Address, - IN LONGLONG Exchange); - -XTFASTCALL -CHAR -RtlAtomicExchangeAdd8(IN VOLATILE PCHAR Address, - IN CHAR Value); - -XTFASTCALL -SHORT -RtlAtomicExchangeAdd16(IN VOLATILE PSHORT Address, - IN SHORT Value); - -XTFASTCALL -LONG -RtlAtomicExchangeAdd32(IN VOLATILE PLONG Address, - IN LONG Value); - -XTFASTCALL -LONGLONG -RtlAtomicExchangeAdd64(IN VOLATILE PLONGLONG Address, - IN LONGLONG Value); - -XTFASTCALL -PVOID -RtlAtomicExchangePointer(IN VOLATILE PVOID *Address, - IN PVOID Exchange); - -XTFASTCALL -PSINGLE_LIST_ENTRY -RtlAtomicFlushSingleList(IN PSINGLE_LIST_HEADER Header); - -XTFASTCALL -CHAR -RtlAtomicIncrement8(IN VOLATILE PCHAR Address); - -XTFASTCALL -SHORT -RtlAtomicIncrement16(IN VOLATILE PSHORT Address); - -XTFASTCALL -LONG -RtlAtomicIncrement32(IN VOLATILE PLONG Address); - -XTFASTCALL -LONGLONG -RtlAtomicIncrement64(IN VOLATILE PLONGLONG Address); - -XTFASTCALL -CHAR -RtlAtomicOr8(IN VOLATILE PCHAR Address, - IN CHAR Mask); - -XTFASTCALL -SHORT -RtlAtomicOr16(IN VOLATILE PSHORT Address, - IN SHORT Mask); - -XTFASTCALL -LONG -RtlAtomicOr32(IN VOLATILE PLONG Address, - IN LONG Mask); - -XTFASTCALL -LONGLONG -RtlAtomicOr64(IN VOLATILE PLONGLONG Address, - IN LONGLONG Mask); - -XTFASTCALL -PSINGLE_LIST_ENTRY -RtlAtomicPopEntrySingleList(IN PSINGLE_LIST_HEADER Header); - -XTFASTCALL -PSINGLE_LIST_ENTRY -RtlAtomicPushEntrySingleList(IN PSINGLE_LIST_HEADER Header, - IN PSINGLE_LIST_ENTRY Entry); - -XTFASTCALL -CHAR -RtlAtomicXor8(IN VOLATILE PCHAR Address, - IN CHAR Mask); - -XTFASTCALL -SHORT -RtlAtomicXor16(IN VOLATILE PSHORT Address, - IN SHORT Mask); - -XTFASTCALL -LONG -RtlAtomicXor32(IN VOLATILE PLONG Address, - IN LONG Mask); - -XTFASTCALL -LONGLONG -RtlAtomicXor64(IN VOLATILE PLONGLONG Address, - IN LONGLONG Mask); - -XTFASTCALL -USHORT -RtlByteSwap16(IN USHORT Source); - -XTFASTCALL -ULONG -RtlByteSwap32(IN ULONG Source); - -XTFASTCALL -ULONGLONG -RtlByteSwap64(IN ULONGLONG Source); - XTAPI SIZE_T RtlCompareMemory(IN PCVOID LeftBuffer, @@ -224,52 +32,12 @@ RtlFillMemory(OUT PVOID Destination, IN SIZE_T Length, IN UCHAR Value); -XTCDECL -VOID -RtlInitializeListHead(IN PLIST_ENTRY ListHead); - -XTCDECL -VOID -RtlInitializeListHead32(IN PLIST_ENTRY32 ListHead); - -XTCDECL -VOID -RtlInsertHeadList(IN OUT PLIST_ENTRY ListHead, - IN PLIST_ENTRY Entry); - -XTCDECL -VOID -RtlInsertTailList(IN OUT PLIST_ENTRY ListHead, - IN PLIST_ENTRY Entry); - -XTFASTCALL -PVOID -RtlInterlockedCompareExchangePointer(IN VOLATILE PVOID *Destination, - IN PVOID Comperand, - IN PVOID Exchange); - -XTFASTCALL -LONG_PTR -RtlInterlockedDecrementLongPtr(IN VOLATILE PLONG_PTR Addend); - -XTCDECL -BOOLEAN -RtlListEmpty(PLIST_ENTRY ListHead); - -XTCDECL -BOOLEAN -RtlListLoop(IN PLIST_ENTRY ListHead); - XTAPI VOID RtlMoveMemory(OUT PVOID Destination, IN PCVOID Source, IN SIZE_T Length); -XTCDECL -VOID -RtlRemoveEntryList(IN PLIST_ENTRY Entry); - XTAPI BOOLEAN RtlSameMemory(IN PCVOID LeftBuffer, diff --git a/xtoskrnl/includes/amd64/rtl.h b/xtoskrnl/includes/amd64/rtl.h new file mode 100644 index 0000000..dab695a --- /dev/null +++ b/xtoskrnl/includes/amd64/rtl.h @@ -0,0 +1,20 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/includes/amd64/rtl.h + * DESCRIPTION: XT runtime library routines specific to AMD64 architecture + * DEVELOPERS: Rafal Kupiec + */ + +#ifndef __XTOSKRNL_AMD64_RTL_H +#define __XTOSKRNL_AMD64_RTL_H + +#include + + +XTAPI +VOID +RtlGetStackLimits(OUT PULONG_PTR StackBase, + OUT PULONG_PTR StackLimit); + +#endif /* __XTOSKRNL_AMD64_RTL_H */ diff --git a/xtoskrnl/includes/i686/rtl.h b/xtoskrnl/includes/i686/rtl.h new file mode 100644 index 0000000..6f5fec9 --- /dev/null +++ b/xtoskrnl/includes/i686/rtl.h @@ -0,0 +1,20 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/includes/i686/rtl.h + * DESCRIPTION: XT runtime library routines specific to i686 architecture + * DEVELOPERS: Rafal Kupiec + */ + +#ifndef __XTOSKRNL_I686_RTL_H +#define __XTOSKRNL_I686_RTL_H + +#include + + +XTAPI +VOID +RtlGetStackLimits(OUT PULONG_PTR StackBase, + OUT PULONG_PTR StackLimit); + +#endif /* __XTOSKRNL_I686_RTL_H */ diff --git a/xtoskrnl/includes/rtl.h b/xtoskrnl/includes/rtl.h new file mode 100644 index 0000000..3e31005 --- /dev/null +++ b/xtoskrnl/includes/rtl.h @@ -0,0 +1,247 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/includes/rtl.h + * DESCRIPTION: Private routine definitions for runtime library + * DEVELOPERS: Rafal Kupiec + */ + +#ifndef __XTOSKRNL_RTL_H +#define __XTOSKRNL_RTL_H + +#include + + +XTFASTCALL +CHAR +RtlAtomicAnd8(IN VOLATILE PCHAR Address, + IN CHAR Mask); + +XTFASTCALL +SHORT +RtlAtomicAnd16(IN VOLATILE PSHORT Address, + IN SHORT Mask); + +XTFASTCALL +LONG +RtlAtomicAnd32(IN VOLATILE PLONG Address, + IN LONG Mask); + +XTFASTCALL +LONGLONG +RtlAtomicAnd64(IN VOLATILE PLONGLONG Address, + IN LONGLONG Mask); + +XTFASTCALL +CHAR +RtlAtomicCompareExchange8(IN VOLATILE PCHAR Address, + IN CHAR Comperand, + IN CHAR Exchange); + +XTFASTCALL +SHORT +RtlAtomicCompareExchange16(IN VOLATILE PSHORT Address, + IN SHORT Comperand, + IN SHORT Exchange); + +XTFASTCALL +LONG +RtlAtomicCompareExchange32(IN VOLATILE PLONG Address, + IN LONG Comperand, + IN LONG Exchange); + +XTFASTCALL +LONGLONG +RtlAtomicCompareExchange64(IN VOLATILE PLONGLONG Address, + IN LONGLONG Comperand, + IN LONGLONG Exchange); + +XTFASTCALL +PVOID +RtlAtomicCompareExchangePointer(IN VOLATILE PVOID *Address, + IN PVOID Comperand, + IN PVOID Exchange); + +XTFASTCALL +CHAR +RtlAtomicDecrement8(IN VOLATILE PCHAR Address); + +XTFASTCALL +SHORT +RtlAtomicDecrement16(IN VOLATILE PSHORT Address); + +XTFASTCALL +LONG +RtlAtomicDecrement32(IN VOLATILE PLONG Address); + +XTFASTCALL +LONGLONG +RtlAtomicDecrement64(IN VOLATILE PLONGLONG Address); + +XTFASTCALL +CHAR +RtlAtomicExchange8(IN VOLATILE PCHAR Address, + IN CHAR Exchange); + +XTFASTCALL +SHORT +RtlAtomicExchange16(IN VOLATILE PSHORT Address, + IN SHORT Exchange); + +XTFASTCALL +LONG +RtlAtomicExchange32(IN VOLATILE PLONG Address, + IN LONG Exchange); + +XTFASTCALL +LONGLONG +RtlAtomicExchange64(IN VOLATILE PLONGLONG Address, + IN LONGLONG Exchange); + +XTFASTCALL +CHAR +RtlAtomicExchangeAdd8(IN VOLATILE PCHAR Address, + IN CHAR Value); + +XTFASTCALL +SHORT +RtlAtomicExchangeAdd16(IN VOLATILE PSHORT Address, + IN SHORT Value); + +XTFASTCALL +LONG +RtlAtomicExchangeAdd32(IN VOLATILE PLONG Address, + IN LONG Value); + +XTFASTCALL +LONGLONG +RtlAtomicExchangeAdd64(IN VOLATILE PLONGLONG Address, + IN LONGLONG Value); + +XTFASTCALL +PVOID +RtlAtomicExchangePointer(IN VOLATILE PVOID *Address, + IN PVOID Exchange); + +XTFASTCALL +PSINGLE_LIST_ENTRY +RtlAtomicFlushSingleList(IN PSINGLE_LIST_HEADER Header); + +XTFASTCALL +CHAR +RtlAtomicIncrement8(IN VOLATILE PCHAR Address); + +XTFASTCALL +SHORT +RtlAtomicIncrement16(IN VOLATILE PSHORT Address); + +XTFASTCALL +LONG +RtlAtomicIncrement32(IN VOLATILE PLONG Address); + +XTFASTCALL +LONGLONG +RtlAtomicIncrement64(IN VOLATILE PLONGLONG Address); + +XTFASTCALL +CHAR +RtlAtomicOr8(IN VOLATILE PCHAR Address, + IN CHAR Mask); + +XTFASTCALL +SHORT +RtlAtomicOr16(IN VOLATILE PSHORT Address, + IN SHORT Mask); + +XTFASTCALL +LONG +RtlAtomicOr32(IN VOLATILE PLONG Address, + IN LONG Mask); + +XTFASTCALL +LONGLONG +RtlAtomicOr64(IN VOLATILE PLONGLONG Address, + IN LONGLONG Mask); + +XTFASTCALL +PSINGLE_LIST_ENTRY +RtlAtomicPopEntrySingleList(IN PSINGLE_LIST_HEADER Header); + +XTFASTCALL +PSINGLE_LIST_ENTRY +RtlAtomicPushEntrySingleList(IN PSINGLE_LIST_HEADER Header, + IN PSINGLE_LIST_ENTRY Entry); + +XTFASTCALL +CHAR +RtlAtomicXor8(IN VOLATILE PCHAR Address, + IN CHAR Mask); + +XTFASTCALL +SHORT +RtlAtomicXor16(IN VOLATILE PSHORT Address, + IN SHORT Mask); + +XTFASTCALL +LONG +RtlAtomicXor32(IN VOLATILE PLONG Address, + IN LONG Mask); + +XTFASTCALL +LONGLONG +RtlAtomicXor64(IN VOLATILE PLONGLONG Address, + IN LONGLONG Mask); + +XTFASTCALL +USHORT +RtlByteSwap16(IN USHORT Source); + +XTFASTCALL +ULONG +RtlByteSwap32(IN ULONG Source); + +XTFASTCALL +ULONGLONG +RtlByteSwap64(IN ULONGLONG Source); + +XTCDECL +VOID +RtlInitializeListHead(IN PLIST_ENTRY ListHead); + +XTCDECL +VOID +RtlInitializeListHead32(IN PLIST_ENTRY32 ListHead); + +XTCDECL +VOID +RtlInsertHeadList(IN OUT PLIST_ENTRY ListHead, + IN PLIST_ENTRY Entry); + +XTCDECL +VOID +RtlInsertTailList(IN OUT PLIST_ENTRY ListHead, + IN PLIST_ENTRY Entry); + +XTFASTCALL +PVOID +RtlInterlockedCompareExchangePointer(IN VOLATILE PVOID *Destination, + IN PVOID Comperand, + IN PVOID Exchange); + +XTFASTCALL +LONG_PTR +RtlInterlockedDecrementLongPtr(IN VOLATILE PLONG_PTR Addend); + +XTCDECL +BOOLEAN +RtlListEmpty(PLIST_ENTRY ListHead); + +XTCDECL +BOOLEAN +RtlListLoop(IN PLIST_ENTRY ListHead); + +XTCDECL +VOID +RtlRemoveEntryList(IN PLIST_ENTRY Entry); + +#endif /* __XTOSKRNL_RTL_H */ diff --git a/xtoskrnl/includes/xtos.h b/xtoskrnl/includes/xtos.h index 20f7e31..d2dc8d9 100644 --- a/xtoskrnl/includes/xtos.h +++ b/xtoskrnl/includes/xtos.h @@ -17,7 +17,9 @@ #include "hl.h" #include "ke.h" #include "po.h" +#include "rtl.h" #include ARCH_HEADER(globals.h) #include ARCH_HEADER(ar.h) #include ARCH_HEADER(ke.h) +#include ARCH_HEADER(rtl.h)