Commit Graph

390 Commits

Author SHA1 Message Date
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
3c19c7a56e [*] Fix posix WoASemaphoreImpl 2023-12-30 14:31:37 +00:00
ba6162a7ad [*] An MSVC bug, but not really. 2023-12-30 00:25:53 +00:00
5862dbeacc [+] New generic primitives
[-] AuSemaphore.Unix.hpp
[*] Moved the old pthread based primitives to _removed/*.bak
[+] AuWoASemaphore.Unix.cpp
[+] AuWoASemaphore.Unix.hpp
2023-12-29 16:12:14 +00:00
be2b781ed6 [*] mitigations and clean up before two major commits 2023-12-26 21:01:29 +00:00
9c86d1c899 [*] Linux clean up (?) (+typo) 2023-12-23 03:16:43 +00:00
298b095cc1 [*] WhyOnAddress 2023-12-21 22:41:16 +00:00
a932aa57d2 [*] Formatting pissing me off
[+] using AuWorkerId = AuAsync::WorkerId_t;
[+] using AuWorkerPId = AuAsync::WorkerPId_t;
[+] using AuWorkerID = AuAsync::WorkerPId_t;
2023-12-16 06:42:37 +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
8005b67d82 [*] :/ 2023-12-08 13:03:14 +00:00
367118ab0c [*] (NT Condvar) Minor performance fix
[*] (NT Condvar) Suspected XP-Win7 deadlock
2023-12-06 19:15:06 +00:00
8b4ad9795c [*] Update the FutexSemaphore to wake no more than the requested wake count
[*] Cleanup NTs semaphore
2023-12-06 11:17:50 +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
0c1c6d7c24 [*] Formatting regressions (+ 1x double-based RNG regression) 2023-12-01 03:43:06 +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
43583a1748 [+] IRWLock::CheckSelfThreadIsWriter 2023-12-01 01:15:35 +00:00
216aa01717 [-] Yeetus 2023-11-29 08:50:14 +00:00
22f2e73954 [+] ConditionEx::WaitForSignalAbsNS 2023-11-29 06:08:09 +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
718b5a9316 [*] Nt Condvars: I'm paranoid about this potential race condition 2023-10-20 10:04:06 +01:00
09401cecd6 [*] Added call to Win32DropSchedulerResolution under sleep 2023-10-19 02:48:56 +01:00
74b8910bf9 [*] 529eba18 cont. added support for process time 2023-10-13 21:57:38 +01:00
529eba18c7 [+] IAuroraThread::GetThreadCreationTime 2023-10-13 21:43:59 +01:00
23ddcf9ba1 [*] Trivial XP+ semaphore optimization for high wake counts 2023-10-12 17:00:13 +01:00
5c29787f9c [*] Bug fixes 2023-10-07 20:04:47 +01:00
cdad552ed0 [*] Fix OSThread regression / main thread was stalling for a few seconds on exit because the schedulers end of thread clean up was bailing out under the "pls no dtor race before the os spawn kicks in" lock path
TODO: destink OSThread
2023-10-01 14:12:22 +01:00
53215e57b1 [*] Harden thread entrypoints and post-call deinit 2023-09-23 20:32:01 +01:00
c3165de4cf [*] RWLock: Disable dumb scatter switch for now 2023-09-23 02:50:54 +01:00
76bd36939e [*] Simplify RWLock some more 2023-09-23 02:40:23 +01:00
f59de8b4ae [*] Two typos and change bPreferEmulatedWakeOnAddress to true under NIX 2023-09-20 18:32:02 +01:00
9e1655d579 [*] Clean up RWLock 2023-09-19 17:36:21 +01:00
7477bfe56f [*] A Linux and other OS insurance policy: rel/xref 7357764c 2023-09-19 02:05:11 +01:00
5a9292ad1a [*] ...yes 2023-09-19 01:38:16 +01:00
7357764cfc [*] Fix abnormal ::UnlockWrite performance under heavyweight native WaitOnAddress platforms (Linux, BSD-like, etc) 2023-09-18 18:21:46 +01:00
a96788623f [*] Fix linux build warning and not quite complete linux ipc fix a4f6db7ec9 2023-09-17 18:36:20 +01:00
81775a76bf [*] Linux: build regressions 2023-09-15 00:10:40 +01:00
729c9f8508 [*] Ensure WaitFor always respects 0 timeouts, no matter the flags 2023-09-12 22:06:55 +01:00
6ff27c6855 [*] This was bothering me - 4b0a7c65 cont 2023-09-12 21:56:58 +01:00
bf03124f92 [+] AuThreading::TryWait 2023-09-12 18:47:25 +01:00
8e54071d60 [-] Remove 2 year old 0.0 WaitFor back-off implementation 2023-09-12 18:30:45 +01:00
4b0a7c651a [*] Guess I should finalize this for linux. The verbosity of writing a cas in the wait loops is stupid if we arent doing anything special with the bits. 2023-09-12 16:12:54 +01:00
403c186f0a [*] Improve NT semaphore: use a different internal api now. Might help uncontested servers with work queues using semaphores 2023-09-12 13:28:46 +01:00
d727859cc2 [*] Linux/Modern NT regression in new optimized event wait path 2023-09-10 23:06:58 +01:00
22efbff12f [*] 74dc6772 cont: this structure is going to be padded to 32bits anyway. this makes the atomic operations easier 2023-09-10 18:10:36 +01:00
b539cfb353 [*] 74dc6772 cont: improvements 2023-09-10 15:04:32 +01:00
74dc6772b0 [+] Non-mutually exclusive binary semaphore / event wait path
[+] ThreadingConfig::gPreferFutexEvent
2023-09-10 14:50:59 +01:00
48dc2e790b [+] IEvent::TrySet()
[+] New atomic logic for AuEvent. With this change, I can stop slandering it as the "shit primitive."
(it's still not the best it could be, but it's an improvement over what i had before)
2023-09-10 14:04:00 +01:00
1a4a4ad863 [*] Added missing this->s 2023-09-09 19:46:08 +01:00
dfe44317a0 [*] SMT Yield: minor branch added to SMT Yield 2023-09-09 18:09:22 +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
4ad70cadb4 [*] optimization: cea33621 cont 2023-09-09 14:38:02 +01:00
cea3362186 [*] Finally fixed an old regression: RWLock is back to being write-biased to prevent forever-read conditions 2023-09-09 13:03:02 +01:00
109b0cff3f [*] ...and same applies to RWLock
(instead its pls dont use the public api instead of the internal NT apis)
2023-09-09 12:39:47 +01:00
9601fcfd39 [*] NT AuThreadPrimitives: stop using these AuProcAddresses directly 2023-09-09 12:29:43 +01:00
8e59300395 [*] Another broken Linux path 2023-09-09 12:17:40 +01:00
36a72228db [*] Cleanup/formatting of SMT yields 2023-09-06 17:01:01 +01:00
f53508baa9 [*] Unify both SMT subloops 2023-09-04 23:03:08 +01:00
1c80e4910b [*] RWLock: another optimization for embedded and win7 targets 2023-09-03 13:35:12 +01:00
1479bcaa22 [*] bonk 2023-09-02 21:24:37 +01:00
c2a6bd92fa [*] Minor optimization in a shit primitive 2023-09-02 19:09:04 +01:00
0838373410 [*] NT Optimization: more aggressive semaphores to prevent atomic failures (perhaps this could be made to account for weak exchanges under different archs) 2023-09-02 19:05:07 +01:00
cc6e0358fa [*] NT: further optimizations to solve CPU usage regressions 2023-09-02 16:11:06 +01:00
9fbdafea74 [*] x86_64 Use RDSC for more deterministic back-off durations
Well, sort of. It's more likely to be referenced against the exact frequency stated in the hard-coded CPUID vendor string.
2023-09-02 14:37:07 +01:00
de25694416 [*] bonk (use AuAXXX atomics) 2023-09-02 04:55:43 +01:00
a20e9b4954 [*] Win10/Linux regression in RWLock (again) 2023-08-31 18:41:18 +01:00
dd655ad3e0 [*] Linux unaligned signal fix 2023-08-31 18:41:10 +01:00
affe4cc496 [*] RWLock: simplify writersPending_ guard
[*] Fix RWLock: I may have messed up the new fast path timeouts in RWLock
[*] RWLock: refactoring/improvements
2023-08-30 16:11:54 +01:00
cf118d0b4b [*] Minor RW lock tweaks 2023-08-30 14:57:13 +01:00
3503d0ec68 [+] Added Linux signal configuration and separate LinuxConfig type (LinuxConfig)
[*] Fix Linux regressions in previous NT commit
2023-08-29 03:11:28 +01:00
fef6eac859 [*] More Linux tweaks 2023-08-28 19:13:18 +01:00
0d759f85f8 [*] Linux/Clang fixerinos/improvements 2023-08-28 16:35:32 +01:00
55c02d4aa0 [*] Tweak default thread config
[*] Fix regressions
2023-08-28 11:48:13 +01:00
b2e1df8f72 [*] Annoying Linux checks 2023-08-27 21:35:40 +01:00
97296d1fe9 [*] ThreadingConfig::bPreferEnableAdaptiveSpin 2023-08-27 20:26:36 +01:00
8fe2619673 [*] Rework SMT yielding 2023-08-27 19:56:22 +01:00
5cf7533eab [*] Linux and UNIX QOL 2023-08-27 12:42:10 +01:00
3e5aa1aff0 [*] Simplified lines of code: shared pointer init 2023-08-26 19:02:14 +01:00
7680a86d5a [*] ...same applies to these 2023-08-26 18:46:00 +01:00
610f2c73a0 [*] Optimize >4 thread wakeups on <= Win7, under Semaphore 2023-08-26 18:08:33 +01:00
346a9f3bde [*] More aggressively wake up reorder prone (unlikely) condvars under broadcast (unlikely) 2023-08-26 15:56:59 +01:00
3ca8de022e [*] Fix issues related to inconstent retardation in the asinine freetard world
GNU and its consequences have been a disaster for the human race
2023-08-26 15:04:48 +01:00
4a73f7250f [*] Another uniproc test 2023-08-25 12:42:31 +01:00
337df8040c [*] Move uniprocessor check 2023-08-24 15:12:49 +01:00
100964ac87 [*] NT Semaphore optimization 2023-08-24 13:55:31 +01:00
935d1b6ab2 [*] RWLock: added another SignalManyWriter condition to ensure upgrades never get missed 2023-08-24 11:45:15 +01:00
1ecd46ddbf [*] Ad-hoc system thread signals 2023-08-24 10:43:33 +01:00