From 19a1b11236047dc2d7aa90c34c7e03af7297e453 Mon Sep 17 00:00:00 2001 From: Aiken Harris Date: Tue, 23 Jun 2026 14:21:50 +0200 Subject: [PATCH] Delete broken RTL atomic functions --- sdk/xtdk/xtstruct.h | 1 - sdk/xtdk/xttypes.h | 7 -- xtoskrnl/includes/rtl/atomic.hh | 9 +-- xtoskrnl/rtl/atomic.cc | 135 -------------------------------- 4 files changed, 3 insertions(+), 149 deletions(-) diff --git a/sdk/xtdk/xtstruct.h b/sdk/xtdk/xtstruct.h index 39c4f1f..4264e21 100644 --- a/sdk/xtdk/xtstruct.h +++ b/sdk/xtdk/xtstruct.h @@ -87,7 +87,6 @@ typedef struct _ANSI_STRING64 ANSI_STRING64, *PANSI_STRING64; typedef struct _CPPORT CPPORT, *PCPPORT; typedef const struct _CMMPAGEMAP_ROUTINES CMMPAGEMAP_ROUTINES, *PCMMPAGEMAP_ROUTINES; typedef struct _CSTRING CSTRING, *PCSTRING; -typedef struct _DOUBLE_ULONG_PTR DOUBLE_ULONG_PTR, *PDOUBLE_ULONG_PTR; typedef struct _EFI_1394_DEVICE_PATH EFI_1394_DEVICE_PATH, *PEFI_1394_DEVICE_PATH; typedef struct _EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR, *PEFI_ACPI_ADDRESS_SPACE_DESCRIPTOR; typedef struct _EFI_ACPI_ADR_DEVICE_PATH EFI_ACPI_ADR_DEVICE_PATH, *PEFI_ACPI_ADR_DEVICE_PATH; diff --git a/sdk/xtdk/xttypes.h b/sdk/xtdk/xttypes.h index 239dc19..14e6e89 100644 --- a/sdk/xtdk/xttypes.h +++ b/sdk/xtdk/xttypes.h @@ -156,13 +156,6 @@ typedef LPCUWSTR PCUTSTR, LPCUTSTR; /* Variadic ABI types */ typedef __builtin_va_list VA_LIST, *PVA_LIST; -/* Double ULONG_PTR structure */ -typedef struct _DOUBLE_ULONG_PTR -{ - ULONG_PTR LowPart; - ULONG_PTR HighPart; -} DOUBLE_ULONG_PTR, *PDOUBLE_ULONG_PTR; - /* 128-bit floats structure */ typedef struct _FLOAT128 { diff --git a/xtoskrnl/includes/rtl/atomic.hh b/xtoskrnl/includes/rtl/atomic.hh index 08f74e6..1501795 100644 --- a/xtoskrnl/includes/rtl/atomic.hh +++ b/xtoskrnl/includes/rtl/atomic.hh @@ -52,9 +52,6 @@ namespace RTL STATIC XTFASTCALL LONG_PTR CompareExchange64(IN PLONG_PTR Address, IN LONG_PTR Comperand, IN LONG_PTR Exchange); - STATIC XTFASTCALL DOUBLE_ULONG_PTR CompareExchange128(IN PDOUBLE_ULONG_PTR Address, - IN DOUBLE_ULONG_PTR Comperand, - IN DOUBLE_ULONG_PTR Exchange); STATIC XTFASTCALL PVOID CompareExchangePointer(IN PVOID *Address, IN PVOID Comperand, IN PVOID Exchange); @@ -80,7 +77,7 @@ namespace RTL IN LONG_PTR Value); STATIC XTFASTCALL PVOID ExchangePointer(IN PVOID *Address, IN PVOID Exchange); - STATIC XTFASTCALL PSINGLE_LIST_ENTRY FlushSingleList(IN PSINGLE_LIST_HEADER Header); + STATIC XTFASTCALL PSINGLE_LIST_ENTRY FlushSingleList(IN PSINGLE_LIST_HEADER ListHead); STATIC XTFASTCALL CHAR Increment8(IN PCHAR Address); STATIC XTFASTCALL SHORT Increment16(IN PSHORT Address); STATIC XTFASTCALL LONG Increment32(IN PLONG Address); @@ -93,8 +90,8 @@ namespace RTL IN LONG Mask); STATIC XTFASTCALL LONG_PTR Or64(IN PLONG_PTR Address, IN LONG_PTR Mask); - STATIC XTFASTCALL XTFASTCALL PSINGLE_LIST_ENTRY PopEntrySingleList(IN PSINGLE_LIST_HEADER Header); - STATIC XTFASTCALL PSINGLE_LIST_ENTRY PushEntrySingleList(IN PSINGLE_LIST_HEADER Header, + STATIC XTFASTCALL XTFASTCALL PSINGLE_LIST_ENTRY PopEntrySingleList(IN PSINGLE_LIST_HEADER ListHead); + STATIC XTFASTCALL PSINGLE_LIST_ENTRY PushEntrySingleList(IN PSINGLE_LIST_HEADER ListHead, IN PSINGLE_LIST_ENTRY Entry); STATIC XTFASTCALL CHAR Xor8(IN PCHAR Address, IN CHAR Mask); diff --git a/xtoskrnl/rtl/atomic.cc b/xtoskrnl/rtl/atomic.cc index ab0a726..4d75041 100644 --- a/xtoskrnl/rtl/atomic.cc +++ b/xtoskrnl/rtl/atomic.cc @@ -341,41 +341,6 @@ RTL::Atomic::CompareExchange64(IN PLONG_PTR Address, return __sync_val_compare_and_swap(Address, Comperand, Exchange); } -/** - * Performs an atomic compare-exchange operation on the 64-bit or 128-bit value depending on architecture. - * - * @param Address - * Supplies the address of the value to compare and potentially exchange. - * - * @param Comperand - * Supplies the value to compare against. - * - * @param Exchange - * Supplies the value to write if the comparison returns equality. - * - * @return This routine returns the original value at the given address. - * - * @since XT 1.0 - */ -XTFASTCALL -DOUBLE_ULONG_PTR -RTL::Atomic::CompareExchange128(IN PDOUBLE_ULONG_PTR Address, - IN DOUBLE_ULONG_PTR Comperand, - IN DOUBLE_ULONG_PTR Exchange) -{ - DOUBLE_ULONG_PTR Value; - - /* Make a local copy of the comperand */ - Value = Comperand; - - /* Perform an atomic compare-exchange operation */ - __atomic_compare_exchange((VOLATILE PDOUBLE_ULONG_PTR)Address, &Value, &Exchange, - FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); - - /* Return value */ - return Value; -} - /** * Performs atomically compare exchange operation. * @@ -659,23 +624,6 @@ RTL::Atomic::ExchangePointer(IN PVOID *Address, return (PVOID)__sync_lock_test_and_set(Address, Exchange); } -/** - * Removes all entries from single linked list. - * - * @param Header - * Supplies a pointer to the header of linked list. - * - * @return This routine returns a pointer to the original list, or NULLPTR if the list was already empty. - * - * @since XT 1.0 - */ -XTFASTCALL -PSINGLE_LIST_ENTRY -RTL::Atomic::FlushSingleList(IN PSINGLE_LIST_HEADER Header) -{ - return (PSINGLE_LIST_ENTRY)Exchange64((PLONG_PTR)&Header->Alignment, (LONGLONG)NULLPTR); -} - /** * Performs atomically increment of the 8-bit value. * @@ -828,89 +776,6 @@ RTL::Atomic::Or64(IN PLONG_PTR Address, return __sync_fetch_and_or(Address, Mask); } -/** - * Removes and returns the first entry from single linked list. - * - * @param Header - * Supplies a pointer to the header of a single linked list. - * - * @return This routine returns a pointer to the removed element, or NULLPTR if the list was empty. - * - * @since XT 1.0 - */ -XTFASTCALL -PSINGLE_LIST_ENTRY -RTL::Atomic::PopEntrySingleList(IN PSINGLE_LIST_HEADER Header) -{ - PSINGLE_LIST_ENTRY ListHead, FirstEntry, NextEntry; - - /* Save header and first entry */ - ListHead = (PSINGLE_LIST_ENTRY)Header; - FirstEntry = ListHead->Next; - do - { - /* Check if list is not empty */ - if(!FirstEntry) - { - /* Empty list */ - return NULLPTR; - } - - /* Update link */ - NextEntry = FirstEntry; - - /* Compare and exchange */ - FirstEntry = (PSINGLE_LIST_ENTRY)CompareExchange64((PLONG_PTR)ListHead, - (LONG_PTR)FirstEntry->Next, - (LONG_PTR)FirstEntry); - } while(FirstEntry != NextEntry); - - /* Return removed element */ - return FirstEntry; -} - -/** - * Inserts new entry at the beginning of single linked list. - * - * @param Header - * Supplies a pointer to the header of linked list. - * - * @param Entry - * Supplies a pointer to entry, that will be inserted into linked list. - * - * @return This routine returns a pointer to original heading, or NULLPTR if the list was originally empty. - * - * @since XT 1.0 - */ -XTFASTCALL -PSINGLE_LIST_ENTRY -RTL::Atomic::PushEntrySingleList(IN PSINGLE_LIST_HEADER Header, - IN PSINGLE_LIST_ENTRY Entry) -{ - PSINGLE_LIST_ENTRY ListHead, ListEntry, FirstEntry, NextEntry; - - /* Save header and new entry */ - ListHead = (PSINGLE_LIST_ENTRY)Header; - ListEntry = Entry; - - /* Save next link in new first element */ - FirstEntry = ListHead->Next; - do - { - /* Update links */ - ListEntry->Next = FirstEntry; - NextEntry = FirstEntry; - - /* Compare and exchange */ - FirstEntry = (PSINGLE_LIST_ENTRY)CompareExchange64((PLONG_PTR)ListHead, - (LONG_PTR)ListEntry, - (LONG_PTR)FirstEntry); - } while(FirstEntry != NextEntry); - - /* Return original first element */ - return FirstEntry; -} - /** * Performs an atomic bitwise XOR operation on the 8-bit value. *