Commit Graph

387 Commits

Author SHA1 Message Date
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
efa26dd99d [*] YieldPollNs nonzero timeout check 2024-05-27 16:02:54 +01:00
a5a9fa3887 [*] Updated AuTheading::WaitFor prototype
[+/*] Missing YieldPoll MS prototype in public header
2024-05-27 15:04:21 +01:00
e4fa5d549e [*] Refactor IAuroraThread 2024-05-27 13:28:57 +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
d589ce3549 [*] After 2 or 3 years, redo the spinlock 2024-05-07 16:46:12 +01:00
631624dc55 [*] Linux build regressions, and shrink the size of Linux RWLocks to 48 bytes from 64 2024-05-07 14:57:19 +01:00
8e1c74a5df [*] i swore i replaced this with a tpause before
[*] ...and the docs arent clear on whether or not this clock value is relative or absolute
2024-05-06 22:47:45 +01:00
f3ba901f71 [+] Zen3 on top of AlderLake optimizations
[*] Minor alderlake adjustments
2024-05-05 19:42:10 +01:00
459a9a789b [*] Switch C0.2 and C0.1 powerstates around 2024-05-03 15:52:50 +01:00
134816e128 [*] Optimize primitives SMTYield for Alderlake+ user-space, BIOS-ring mwait, and AARCH 2024-05-03 12:22:38 +01:00
c79a709f96 [*] RWLock: "I didn't like what I saw emitted" cont 2024-04-30 22:57:45 +01:00
07ef822bfa [*] AURORA_FORCE_SRW_LOCKS isn't officially supported but it should at least build 2024-04-30 20:37:00 +01:00
410a67d842 [*] RWLock: I didn't like what I saw emitted 2024-04-30 20:29:20 +01:00
22a4d3383d [*] NT/Win32-only: improved AuThreading::SleepNs(qwTimeout) 2024-04-30 19:02:05 +01:00
9d4c5a8cfc [*] (optimize) RunOSWaitOnAddressEQNoTimedNoErrors wasn't NT aware 2024-04-28 14:24:13 +01:00
44c7898c29 [*] Developers developers developers developers
Absolute expiration times track any changes in the system time; relative expiration times are not affected by system time changes.
2024-04-23 23:20:53 +01:00
0164919cd9 [+] while_bc 2024-04-13 22:49:05 +01:00
9f5c0e559c [*] Minor ConditionVariableNT optimization (SteadyClockNS() may syscall under vms) 2024-04-11 19:58:42 +01:00
ec44cc1d69 [*] Ensure these fallback primitives can be accessed by -> operator 2024-03-27 03:19:18 +00: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
afbe942ffd [*] These config fields were switched to abs values, not relative to the user signal range 2024-03-08 21:59:50 +00:00
2163a58892 [*] Linux runtime regressions 2024-03-04 11:55:54 +00:00
65c78ef182 [*] Move some platform specific code from AuWakeOnAddress to AuProcAddresses.*.* 2024-03-03 00:28:36 +00:00
9591fc9d30 [*] Harden detached spawn 2024-03-02 23:47:58 +00:00
3004c3de19 [+] Experimental AuThreading::TryWaitOnAddressUntilEqualEx, WaitOnAddressUntilEqual, WaitOnAddressUntilEqualSteady 2024-03-02 23:23:16 +00:00
03623dfa48 [*] c111dee8 cont. Simplification of if (SignalSpuriously()) AddWatcher() continued 2024-02-14 01:03:14 +00:00
c111dee855 [*] Harden WinXP-7 semaphores [2b0ed797 cont] [more paranoia]
[*] Dont overspin spurious modernnt condvar wakes
[*] Revert 2943ffdb's add waiter, if under modern nt

1: While spuriously waking a blocked keyed event, don't leave the condition variable in a state where signals can be ignored.
2024-02-11 06:22:19 +00:00
2b0ed79729 [*] NT Condvar hardening: Windows XP-7 hardening of the spin condition when racing against multiple threads 2024-02-08 13:14:18 +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
899e505b1e [*] NT Win8+ FastPath: Fix missing BSL 2024-02-04 17:24:46 +00:00
62b6fa20f8 [*] Update the copyright header of most of the primitives
[*] Fix generic mutex abs yield always returning true
2024-01-29 14:48:04 +00:00
2943ffdbc2 [*] Harden Windows XP - 7 condvar; where signalers can lock up pending scheduling n threads whilst a spurious wake is occurring and trying to preemptively require the lock under the signal 2024-01-28 08:23:13 +00:00
d1c668b2c1 [*] wtf happened here? what the actual fuck (5cc811be19 5 months ago) 2024-01-27 09:15:31 +00:00
9e7615d80c [*] Same thread name identity in these constructors 2024-01-23 23:31:09 +00:00
7038787001 [+] Thread name identities 2024-01-23 23:03:52 +00:00
cf3d4fc001 [*] Amend 4fcdc798 WoA configuration 2024-01-23 18:21:10 +00:00
4fcdc798cf [+] AuWoASemaphore.hpp configuration 2024-01-22 08:32:30 +00:00
34e49d2d10 [*] Removed redundant branches from AuThreadPrimitives 2024-01-21 21:15:57 +00:00
acbd62666f [*] WoA: This member must be marked volatile due to over ::WaitOn optimization of assumed single-threaded control flow 2024-01-19 21:37:31 +00:00
0d6d073b85 [*] No way should we be using DWORDs here 2024-01-07 02:26:34 +00:00
49a6173011 [+] Improved SMT yielding
[+] Clocks.aarch64.[h/c]pp
2024-01-02 05:54:22 +00:00
6037d14674 [-] hadnt fully removed the aggressive context switch thing from the old rwlock impl 2023-12-30 21:58:52 +00:00
4e0c68d7ad [*] fix posix cont (crit) 3c19c7a5 2023-12-30 17:59:45 +00:00
3db7f527f4 [*] Extend paranoia 2023-12-30 14:56:17 +00:00