Migrate RTL subsystem to C++
Some checks failed
Builds / ExectOS (amd64, debug) (push) Failing after 21s
Builds / ExectOS (amd64, release) (push) Failing after 20s
Builds / ExectOS (i686, debug) (push) Failing after 19s
Builds / ExectOS (i686, release) (push) Failing after 18s

This commit is contained in:
2025-09-11 18:28:24 +02:00
parent e507dd0390
commit 9518e7da8e
35 changed files with 3133 additions and 1068 deletions

View File

@@ -28,4 +28,37 @@ HlInitializeComPort(IN OUT PCPPORT Port,
IN PUCHAR PortAddress,
IN ULONG BaudRate);
XTCLINK
XTAPI
UCHAR
HlReadRegister8(IN PVOID Register);
XTCLINK
XTAPI
USHORT
HlReadRegister16(IN PVOID Register);
XTCLINK
XTAPI
ULONG
HlReadRegister32(IN PVOID Register);
XTCLINK
XTAPI
VOID
HlWriteRegister8(IN PVOID Register,
IN UCHAR Value);
XTCLINK
XTAPI
VOID
HlWriteRegister16(IN PVOID Register,
IN USHORT Value);
XTCLINK
XTAPI
VOID
HlWriteRegister32(IN PVOID Register,
IN ULONG Value);
#endif /* __XTDK_HLFUNCS_H */

View File

@@ -15,326 +15,363 @@
#include <rtltypes.h>
/* Routines used by XTLDR */
XTCDECL
VOID
RtlInitializeListHead(IN PLIST_ENTRY 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);
XTAPI
UCHAR
RtlReadRegisterByte(IN VOLATILE PVOID Register);
XTAPI
ULONG
RtlReadRegisterLong(IN VOLATILE PVOID Register);
XTAPI
USHORT
RtlReadRegisterShort(IN VOLATILE PVOID Register);
XTCDECL
VOID
RtlRemoveEntryList(IN PLIST_ENTRY Entry);
/* Runtime Library routines forward references */
XTCLINK
XTAPI
VOID
RtlClearAllBits(IN PRTL_BITMAP BitMap);
XTCLINK
XTAPI
VOID
RtlClearBit(IN PRTL_BITMAP BitMap,
IN ULONG_PTR Bit);
XTCLINK
XTAPI
VOID
RtlClearBits(IN PRTL_BITMAP BitMap,
IN ULONG_PTR StartingIndex,
IN ULONG_PTR Length);
XTCLINK
XTAPI
ULONG
RtlClearSetBits(IN PRTL_BITMAP BitMap,
IN ULONG_PTR Length,
IN ULONG_PTR Index);
XTCLINK
XTAPI
BOOLEAN
RtlCompareGuids(IN PGUID Guid1,
IN PGUID Guid2);
XTCLINK
XTAPI
SIZE_T
RtlCompareMemory(IN PCVOID LeftBuffer,
IN PCVOID RightBuffer,
IN SIZE_T Length);
XTCLINK
XTAPI
SIZE_T
RtlCompareString(IN PCSTR String1,
IN PCSTR String2,
IN SIZE_T Length);
XTCLINK
XTAPI
SIZE_T
RtlCompareStringInsensitive(IN PCSTR String1,
IN PCSTR String2,
IN SIZE_T Length);
XTCLINK
XTAPI
SIZE_T
RtlCompareWideString(IN PCWSTR String1,
IN PCWSTR String2,
IN SIZE_T Length);
XTCLINK
XTAPI
SIZE_T
RtlCompareWideStringInsensitive(IN PCWSTR String1,
IN PCWSTR String2,
IN SIZE_T Length);
XTCLINK
XTAPI
PCHAR
RtlConcatenateString(OUT PCHAR Destination,
IN PCHAR Source,
IN SIZE_T Count);
XTCLINK
XTAPI
PWCHAR
RtlConcatenateWideString(OUT PWCHAR Destination,
IN PWCHAR Source,
IN SIZE_T Count);
XTCLINK
XTAPI
LARGE_INTEGER
RtlConvertToLargeInteger32(IN LONG Value);
XTCLINK
XTAPI
LARGE_INTEGER
RtlConvertToLargeIntegerUnsigned32(IN ULONG Value);
XTCLINK
XTAPI
VOID
RtlCopyMemory(OUT PVOID Destination,
IN PCVOID Source,
IN SIZE_T Length);
XTCLINK
XTAPI
VOID
RtlCopyString(IN PCHAR Destination,
IN PCSTR Source,
IN ULONG Length);
XTCLINK
XTAPI
VOID
RtlCopyWideString(IN PWCHAR Destination,
IN PCWSTR Source,
IN ULONG Length);
XTCLINK
XTAPI
LARGE_INTEGER
RtlDivideLargeInteger(IN LARGE_INTEGER Dividend,
IN ULONG Divisor,
OUT PULONG Remainder);
XTCLINK
XTAPI
ULONG_PTR
RtlFindClearBits(IN PRTL_BITMAP BitMap,
IN ULONG_PTR Length,
IN ULONG_PTR Index);
XTCLINK
XTAPI
ULONG_PTR
RtlFindSetBits(IN PRTL_BITMAP BitMap,
IN ULONG_PTR Length,
IN ULONG_PTR Index);
XTCLINK
XTAPI
PCSTR
RtlFindString(IN PCSTR Source,
IN PCSTR Search);
XTCLINK
XTAPI
PCSTR
RtlFindStringInsensitive(IN PCSTR Source,
IN PCSTR Search);
XTCLINK
XTAPI
PCWSTR
RtlFindWideString(IN PCWSTR Source,
IN PCWSTR Search);
XTCLINK
XTAPI
PCWSTR
RtlFindWideStringInsensitive(IN PCWSTR Source,
IN PCWSTR Search);
XTCLINK
XTAPI
XTSTATUS
RtlFormatWideString(IN PRTL_PRINT_CONTEXT Context,
IN PCWSTR Format,
IN VA_LIST ArgumentList);
XTCLINK
XTAPI
VOID
RtlInitializeBitMap(IN PRTL_BITMAP BitMap,
IN PULONG_PTR Buffer,
IN ULONG Size);
XTCLINK
XTCDECL
VOID
RtlInitializeListHead(IN PLIST_ENTRY ListHead);
XTCLINK
XTCDECL
VOID
RtlInsertHeadList(IN OUT PLIST_ENTRY ListHead,
IN PLIST_ENTRY Entry);
XTCLINK
XTCDECL
VOID
RtlInsertTailList(IN OUT PLIST_ENTRY ListHead,
IN PLIST_ENTRY Entry);
XTCLINK
XTCDECL
BOOLEAN
RtlListEmpty(IN PLIST_ENTRY ListHead);
XTCLINK
XTCDECL
BOOLEAN
RtlListLoop(IN PLIST_ENTRY ListHead);
XTCLINK
XTAPI
VOID
RtlMoveMemory(OUT PVOID Destination,
IN PCVOID Source,
IN SIZE_T Length);
XTCLINK
XTAPI
LARGE_INTEGER
RtlMultiplyLargeInteger(IN LARGE_INTEGER Multiplicand,
IN LONG Multiplier);
XTCLINK
XTCDECL
VOID
RtlRemoveEntryList(IN PLIST_ENTRY Entry);
XTCLINK
XTAPI
VOID
RtlReverseString(IN OUT PCHAR String,
IN ULONG Length);
XTCLINK
XTAPI
VOID
RtlReverseWideString(IN OUT PWCHAR String,
IN ULONG Length);
XTCLINK
XTAPI
BOOLEAN
RtlSameMemory(IN PCVOID LeftBuffer,
IN PCVOID RightBuffer,
IN SIZE_T Length);
XTCLINK
XTAPI
VOID
RtlSetAllBits(IN PRTL_BITMAP BitMap);
XTCLINK
XTAPI
VOID
RtlSetBit(IN PRTL_BITMAP BitMap,
IN ULONG_PTR Bit);
XTCLINK
XTAPI
VOID
RtlSetBits(IN PRTL_BITMAP BitMap,
IN ULONG_PTR StartingIndex,
IN ULONG_PTR Length);
XTCLINK
XTAPI
ULONG
RtlSetClearBits(IN PRTL_BITMAP BitMap,
IN ULONG_PTR Length,
IN ULONG_PTR Index);
XTCLINK
XTAPI
VOID
RtlSetMemory(OUT PVOID Destination,
IN UCHAR Byte,
IN SIZE_T Length);
XTCLINK
XTAPI
SIZE_T
RtlStringLength(IN PCSTR String,
IN SIZE_T MaxLength);
XTCLINK
XTAPI
SIZE_T
RtlStringToWideString(OUT PWCHAR Destination,
IN PCSTR *Source,
IN SIZE_T Length);
XTCLINK
XTAPI
BOOLEAN
RtlTestBit(IN PRTL_BITMAP BitMap,
IN ULONG_PTR Bit);
XTCLINK
XTAPI
PCHAR
RtlTokenizeString(IN PCHAR String,
IN PCSTR Delimiter,
IN OUT PCHAR *SavePtr);
XTCLINK
XTAPI
PWCHAR
RtlTokenizeWideString(IN PWCHAR String,
IN PCWSTR Delimiter,
IN OUT PWCHAR *SavePtr);
XTCLINK
XTAPI
CHAR
RtlToLowerCharacter(IN CHAR Character);
XTCLINK
XTAPI
WCHAR
RtlToLowerWideCharacter(IN WCHAR Character);
XTCLINK
XTAPI
CHAR
RtlToUpperCharacter(IN CHAR Character);
XTCLINK
XTAPI
WCHAR
RtlToUpperWideCharacter(IN WCHAR Character);
XTCLINK
XTAPI
PCHAR
RtlTrimLeftString(IN PCHAR String);
XTCLINK
XTAPI
PWCHAR
RtlTrimLeftWideString(IN PWCHAR String);
XTCLINK
XTAPI
PCHAR
RtlTrimRightString(IN PCHAR String);
XTCLINK
XTAPI
PWCHAR
RtlTrimRightWideString(IN PWCHAR String);
XTCLINK
XTAPI
PCHAR
RtlTrimString(IN PCHAR String);
XTCLINK
XTAPI
PWCHAR
RtlTrimWideString(IN PWCHAR String);
XTCLINK
XTAPI
SIZE_T
RtlWideStringLength(IN PCWSTR String,
IN SIZE_T MaxLength);
XTAPI
VOID
RtlWriteRegisterByte(IN VOLATILE PVOID Register,
IN UCHAR Value);
XTAPI
VOID
RtlWriteRegisterLong(IN VOLATILE PVOID Register,
IN ULONG Value);
XTAPI
VOID
RtlWriteRegisterShort(IN VOLATILE PVOID Register,
IN USHORT Value);
XTCLINK
XTAPI
VOID
RtlZeroMemory(OUT PVOID Destination,

View File

@@ -56,17 +56,17 @@ typedef XTSTATUS (*PWRITE_WIDE_CHARACTER)(IN WCHAR Character);
/* Variable types enumeration list */
typedef enum _RTL_VARIABLE_TYPE
{
Unknown,
AnsiString,
Boolean,
Char,
Float,
Guid,
Integer,
String,
UnicodeString,
WideChar,
WideString
TypeUnknown,
TypeAnsiString,
TypeBoolean,
TypeChar,
TypeFloat,
TypeGuid,
TypeInteger,
TypeString,
TypeUnicodeString,
TypeWideChar,
TypeWideString
} RTL_VARIABLE_TYPE, *PRTL_VARIABLE_TYPE;
/* Bit Map structure definition */