e6c2a5c9de
[*] Optimize for legacy 32bit Windows targets "*"
...
[*] 32bit compilation regressions
*: It's actually worse for Windows Vista and Windows 7. While netbooks of this era should be running 32bit builds to mitigate oversized words, Windows 7 and Vista had decent enough 64bit install bases; XP, Windows 2000, Windows 98, and NT4 are much more relevant 32bit targets
2024-12-27 14:01:36 +00:00
a084105267
[*] Fix: clang build regressions in WakeOnAddress and the added AuSmallCondVar
2024-12-14 19:35:47 +00:00
b9277f0cd9
[+] WakeOnAddress: WOA_WAIT_SIDE_NO_ABSORB
...
[*] WakeOnAddress: better fast-path removal logic
[*] WakeOnAddress: optimize WaitBufferFrom
[-] WakeOnAddress: questionable WOA_STRICTER_FIFO wait-side logic
2024-12-13 18:47:04 +00:00
1013f985aa
[+] AuThreading::WaitForMultipleAddressesOrWithIO (Mixed userspace monitors with IO primitives)
...
[+] AuThreading::WaitMultipleIOTrigger
[+] AuThreading::WaitMulipleContainer
2024-12-12 18:11:50 +00:00
da928a44c8
[*] Remove redundant and dead code from AuWakeOnAddress.cpp
2024-12-12 17:11:29 +00:00
588a6f3a7a
[+] Aurora::ThreadingConfig::bEnableWaitOnAddressAndSurpression
2024-12-03 22:02:01 +00:00
f2ac93027c
[*] Optimize WaitForMultipleAddressesAnd
...
[*] Harden bAlive: possible spurious bAlive = true
[*] WaitOnAddressSteady: dont let N of WakeNOnAdadress consume spurious threads that would fail, at a slight irrelevant cost to the waking thread, despite our guarantee (still true) that these wakes can be dropped
2024-12-03 20:28:46 +00:00
8a94676549
[*] Wait multiple on address fix again: op precedence, and Linux build regression
2024-12-01 17:16:27 +00:00
ecd780b95f
[*] WaitForMultipleAddresses fix:
...
this->waitList.pHead == pEntry, this->waitList.pTail == pEntry under remove head. These must take a slowpath instead
2024-11-30 02:10:52 +00:00
315d35e5ea
[*] Harden WaitForMultipleAddressesOr and WaitForMultipleAddressesAnd against AuStopTheWorld thread termination
2024-11-29 12:42:34 +00:00
d7a27f1a7d
[*] Make WaitForMultipleAddressesAnds return logic more explicit / clearer
2024-11-29 12:00:19 +00:00
9711061dab
[+] Aurora::Threading::WaitForMultipleAddressesOr
...
[+] Aurora::Threading::WaitForMultipleAddressesAnd
[+] Aurora::Threading::WaitMultipleEntry
[+] Aurora::Threading::WaitMulipleContainer
2024-11-29 08:00:51 +00:00
73e901d923
[*] Revert: [*] Partially remove WOA_STRICTER_FIFO (its not ready yet) and fix debug crash
...
[+] Comment noting the partially flawed design of WOA
...i still dont want to support WOA_STRICTER_FIFO
2024-11-29 07:57:11 +00:00
66613c1229
[*] Partially remove WOA_STRICTER_FIFO (its not ready yet) and fix debug crash
2024-11-24 15:21:57 +00:00
6ac47bccf9
[*] Harden against WaitNode bAlive race condition
2024-11-23 20:30:14 +00:00
2440d5b835
[+] WOA_STRICTER_FIFO
2024-11-21 17:17:09 +00:00
54f7ee0b64
[+] Aurora::Threading::EWaitMethod::eAnd
...
[+] Aurora::Threading::EWaitMethod::eNotAnd
(amended: replace eAndNotMask with eNotAnd)
2024-11-14 21:13:13 +00:00
0571aa8dd4
[+] AU_LOCK_GLOBAL_GUARD
...
[+] AuThreading::GetShutdownReadLock()
2024-09-09 03:46:38 +01:00
035d822ec1
[*] Explicit memory order access barrier when reading WOA_SEMAPHORE_MODE-less bAlive under weakly ordered systems. ( 5b193411
cont: "[*] Improve regressed AuWoA time to wake"
...
In all other cases, the memory is either thread-local write-local or followed up by an indirect aquire/release of the processors pipeline and L1 cache by virtue of the containers dumb spinlock ::Lock, ::Unlock (...release, ...barrier)
Clang doesn't have /volatile:ms anymore so we cant rely on that
Assuming MSVC-like or x86 isnt good enough
(and, no retard midwits, volatile is a fine keyword. take ur spec sperging and shove it. i just need to control over-optimization of defacto-weakly ordered access between explicit lockless semaphore yields)
2024-06-23 04:29:21 +01:00
5b19341186
[*] Improve regressed AuWoA time to wake
2024-06-19 22:05:17 +01:00
67894b399b
[*] Revert clang 'optimization' because this piece of shit compiler wont listen to me.
...
Even worse, im just going to fucking nuke all clang related checks from orbit in our global build_scripts (8b00dc69fceea62ecbbf5a21255a41e2f23921a4), because they admit they cause a 2x slowdown.
2024-05-13 23:43:19 +01:00
c3f7e625ba
[*] Clang has check_stack, strict_gs_check is msvc specific
2024-05-10 22:37:51 +01:00
134816e128
[*] Optimize primitives SMTYield for Alderlake+ user-space, BIOS-ring mwait, and AARCH
2024-05-03 12:22:38 +01:00
9d4c5a8cfc
[*] (optimize) RunOSWaitOnAddressEQNoTimedNoErrors wasn't NT aware
2024-04-28 14:24:13 +01:00
1fa12f141f
[*] Fix TryWaitOnAddressSpecialEx from UntilEqual -> Special update
2024-03-24 15:30:38 +00:00
c87ec4e4b6
[*] Linux build regressions
2024-03-21 00:32:13 +00:00
5c34a8435b
[*] d14ba6cf
revert one force inline
2024-03-12 23:32:32 +00:00
d14ba6cfd4
[+] AuThreading::EWaitMethod
...
[+] AuThreading::TryWaitOnAddressSpecial
[+] AuThreading::TryWaitOnAddressSpecialEx
[+] AuThreading::WaitOnAddressSpecial
[+] AuThreading::WaitOnAddressSpecialSteady
2024-03-12 22:50:22 +00:00
65c78ef182
[*] Move some platform specific code from AuWakeOnAddress to AuProcAddresses.*.*
2024-03-03 00:28:36 +00:00
3004c3de19
[+] Experimental AuThreading::TryWaitOnAddressUntilEqualEx, WaitOnAddressUntilEqual, WaitOnAddressUntilEqualSteady
2024-03-02 23:23:16 +00:00
12fd03a6dd
[*] WoA acbd6266
cont (?). I think I'm still getting messed up by over-optimizations as opposed to there being a genuine bug in the primitives. Made the accesses to the comparison volatile during deep sleeps, whereas before we were just casting to regular integer pointers or performing a memcmp.
...
00:29:11:820 15> 1 functions were new in current compilation
00:29:11:820 15> 51 functions had inline decision re-evaluated but remain unchanged
(it did *something*)
2024-02-08 01:55:16 +00:00
298b095cc1
[*] WhyOnAddress
2023-12-21 22:41:16 +00:00
35fb78787d
[*] Symmetry in WoA
2023-12-11 20:40:41 +00:00
9527a076cf
[*] Update WoA
2023-12-11 18:58:17 +00:00
0747ff230e
[*] Thread primitives optimization
...
[*] Fix wake on address regression
2023-12-10 21:38:41 +00:00
1a71a7dd41
[+] WOA_SEMAPHORE_MODE
2023-12-10 19:25:31 +00:00
3f43c320c5
[*] WoA fixes
2023-12-10 19:11:10 +00:00
f79be42357
[*] Clean up dead-code in AuWakeOnAddress.cpp
2023-12-05 07:56:57 +00:00
91cff7ae26
[*] Another WakeOnAddress optimization
2023-12-05 07:15:54 +00:00
b9e8b138f7
[*] Further optimize AuWakeOnAddress (signaling)
2023-12-02 03:35:24 +00:00
274a0e1783
[*] Remove deprecated #if 0s from AuWakeOnAdress.cpp
2023-12-01 01:45:02 +00:00
0283186046
[*] Expand WakeOnAddress array and minor lookup optimization
2023-12-01 01:35:10 +00:00
f06248f687
[*] Minor WakeOnAddress optimization
2023-11-29 05:37:51 +00:00
63b72a9fb5
[*] Resolve WakeOnAddress emu-mode bug and a potential dead-lock
2023-11-17 23:11:58 +00:00
62e8625a11
[+] Aurora::Threading::TryWaitOnAddressEx
...
[*] Spin on top of Linuxs kernel spin, if in non-emu mode
2023-11-14 14:49:40 +00:00
e071b3d509
[+] WaitOnAddress[Steady](..., AuOptional<bool> optAlreadySpun = {}) arguments
...
[+] ...slight UWP optimization?
[*] Lift WoA limitation
2023-10-30 15:29:20 +00:00
f59de8b4ae
[*] Two typos and change bPreferEmulatedWakeOnAddress to true under NIX
2023-09-20 18:32:02 +01:00
88355932c1
[*] Optimize thread configurations to be unpacked from the bitmap once at startup and during reconfigure as opposed ad-hoc
2023-09-09 17:37:14 +01:00
ca2f8fea71
[*] Mitigate Kernel32 and Rtl mixing
2023-09-09 15:29:48 +01:00
1fa063e19f
[*] Why am i calling libm/crt from here? how stupid am i
2023-09-09 15:16:06 +01:00