Commit Graph

1631 Commits

Author SHA1 Message Date
77546b5098 [+] IRandomDevice::XXX has VecD variants
[*] Improve: IRandomDevice internal allocations when handling vector arrays
[*] Fix: NextArrayI64RangeInView
2024-09-05 22:50:02 +01:00
3472665c9f [+] AuOutputOfs OutputOfResult should have a lock for multithread consumption 2024-09-05 18:20:12 +01:00
830286de46 [*] (f466df84: cont): OOM hardening 2024-09-05 17:41:15 +01:00
f466df8464 [*] Minor thread pool fixes / improvements before some bigger commits are done 2024-09-05 06:38:57 +01:00
0f6c020c26 [*] Scar is being a deadbeat. Blame him if this doesn't build. Unverified C2397 narrowing conversion. 2024-08-19 08:17:36 +01:00
3e77e61914 [*] As I said, blame clang and gcc devs for being retarded cunts.
// Even if clang (and gcc) has these intrins available, you must enable them globally, unlike see for some fucking reason.
// I mean, we can do runtime branching around SSE4 paths no problem. Why all of a sudden am i being gated out of the intrins im electing to use by hand?
// No, you (the compiler) may not use these in your baseline feature set (or incl in stl locks). Yes, i still want them. Now fuck off.
// If these end up being wrong, blame clang and gnu for being cunts, not me.

No, I will not raise our requirements above ivybridge; no, I will not expose feature macros to the STL (et al) that boosts our requirements to modern intelaviv slop and amd atomic ackers
2024-08-19 08:05:01 +01:00
6f29237b78 [*] AuFS::ReadString shouldn't fail with an empty file 2024-08-17 16:23:38 +01:00
23a80b8039 [*] Refactor ConditionEx -> IFlexibleConditionVariable 2024-08-08 20:21:03 +01:00
1d2d5753b9 [*] Linux: possible regressions in 57c5515173. Fixes read while transaction is signaled loops 2024-08-06 05:15:33 +01:00
1b240143c4 [*] POSIX: AuProcesses mustn't allocate (sorta) while in a COW address space (including accessing bad CRT apis) 2024-08-06 03:13:53 +01:00
57c5515173 [*] Linux: Harden recursive IO scheduling 2024-08-05 19:44:54 +01:00
55cac676f5 [+] AuLoop::NewSemaphoreEx with max count option for in-process (not ipc) limiting the total wakes.
This is required for Xbox, Xbox 360, and Win32 emulators deriving a mutex via a the NT semaphore primitive instead of the builtin binary semaphore (event) and mutex.
2024-08-05 15:57:13 +01:00
7cc41f1359 [*] Fix: axboe is a piss baby retard who cant even write a thread safe ring buffer
This is the dude tasked with managing Linshits IO stack, including the fundamentally flawed muh zero-syscall pissring (#a), the fucked io_submit apis that never worked properly (incl io_cancel that spuriously returns EINVAL despite all magics matching); the retard who stuck to Linus's idea that MUH O_DIRECT IS LE EVIL YOU MUST USE MY CACHES REEE REEE (#b); and the retard who got indirectly called out by Linus as being apart of the database maintainers who Linus didn't/doesnt like and who wanted these APIs in the first place (#c).

 #a
 This dumb cunt can't even write a ring buffer. He thinks the solution to everything is spawn a thread, like the glibc and libuv retards.
 He seems to think a ring buffer also magically hooks into a thread scheduler, and something something, orange lingo, muh zero syscall overhead as if the kernel should be/is constantly checking every thread for an arbitrary amount of IO ring buffers.

 #b
"The whole notion of "direct IO" is totally braindamaged. Just say no.

	This is your brain: O
	This is your brain on O_DIRECT: .

	Any questions?

I should have fought back harder. There really is no valid reason for EVER
using O_DIRECT. You need a buffer whatever IO you do, and it might as well
be the page cache. There are better ways to control the page cache than
play games and think that a page cache isn't necessary.

So don't use O_DIRECT."
 - Commie Torbals, maintainer of toy academic kernels

 #c
"AIO is a horrible ad-hoc design, with the main excuse being "other, less gifted people, made that design, and we are implementing it for compatibility because database people - who seldom have any shred of taste - actually use it". But AIO was always really really ugly."
 - Commie Torbals, maintainer of toy academic kernels

"Jens works for Oracle"
 - https://web.archive.org/web/20130402030321/https://events.linuxfoundation.org/jls06b

And that's not to mention Google and NodeJS has disabled the usage of his pissring implementation because of shit like this. His shit code has been and will continue to be a security risk. I can't blame them. This retard mustn't be trusted with so much as an 8 year olds lemonade stand.
2024-08-05 05:39:50 +01:00
75f6325ee2 [*] Linux: fix spinning in an io_submit=EAGAIN loop 2024-08-05 04:32:52 +01:00
5947e6a2c3 [*/+] Added internal AuLoop::WaitMultipleOrObjects function for POSIX Issue4+ users, excluding the BSDs, to optimize AuLoop::WaitForMultipleObject users. (Win32 and Xbox emulators).
This mitigates the epoll allocation / release under Linux.
2024-08-02 02:23:19 +01:00
67c4cdbee0 [*] TODO: fix int on both platforms 2024-08-01 13:33:36 +01:00
cc01b0557a [*] Improve ILoopQueue::WaitAll parity (been on the todo list for, idk, 3 years) 2024-08-01 12:55:08 +01:00
c6ce29a188 [*] AuProcess on linux: use AuParse instead of strtoll 2024-08-01 11:41:44 +01:00
2274b7f624 [*] Fix: AuParse parse ints should fail on an empty/null/0-length range instead of parsing nothing and returning true 2024-08-01 11:41:07 +01:00
3c846a2ea7 [*] Fix bcrypt compilation regression 2024-08-01 11:40:10 +01:00
8545c59cba [*] Amend: 5cafefae bad linux optimization (?) 2024-07-31 12:02:31 +01:00
5cafefae5d [*] LSLocalSemaphore bug fix for scriptability. (TODO: reimpl like the event?)
[*] Fix: IO objects not using the explicit slow sync primitives.
Dunno how these werent refactored; then again, i never properly got around to finishing the factories for fast/slow io objects. In addition, some of these arent even accessed by the ILoopSource interface, so it's not as critical of a failure.
2024-07-30 17:53:58 +01:00
9956f1c153 [+] AuIO::Loop::kWaitMultipleFlagBreakAfterOne for Win32 WaitForMultipleObjects shim (we cannot return an array of indices to a win32 program) 2024-07-30 17:26:38 +01:00
ecf8dc6f0b [+] AuRNG::IRandomDevice::...InView
[+] AuRNG::...InView

(amended mixed tabs)
2024-07-21 06:15:02 +01:00
8be1afe570 [+] AuMemory::Heap adapters for third party heap allocators
[+] AuMemory::HeapAdapterInterface to describe aforementioned heap allocators of a very limited API
[+] AuMemory::HeapAdapter[Unique,Shared,]
[+] HeapWin32Adapter to convert HANDLE hHeaps of win32s CreateHeap (RtlCreateHeap?) into AuMemory::Heaps
2024-07-19 09:06:56 +01:00
2628784ff6 [*] Refactor heap stats 2024-07-19 08:25:30 +01:00
c57a90929a [*] Build regression 2024-07-16 00:54:07 +01:00
f2acc253b7 [*] Amend [*] Linux: Update antidbus message for clarity 2024-07-15 00:12:53 +01:00
3d652ed605 [*] af5c8e86c0 20hrs ago: AuSPtr<AuMemoryViewXXX>s werent fully eliminated 2024-07-13 16:34:44 +01:00
46ef3231a2 [*] Change how the default work completion group for an AuAsync threads is created and kept alive 2024-07-12 20:40:05 +01:00
af5c8e86c0 [*] AuSPtr<AuMemoryViewXXXX> is now an anti-pattern. After 3 fucking years, memory views of shared control blocks and atomic in use counters are properly utilized everywhere. We do not need generic superclasses to be safe anymore 2024-07-12 20:22:48 +01:00
d803f1547c [+] Added AuAsync per thread io group singleton
[*] Move static functions out of the thread pool interface. no idea how i had successful builds before
2024-07-12 17:22:07 +01:00
2b2f5c3d23 [*] Win32: added nvme pcie check under fs devices 2024-07-12 16:22:26 +01:00
d9230ec9c3 [*] Fix NT regression whilst working on a POSIX path bug (3143f3d2) 2024-07-12 16:16:12 +01:00
c6e6c1c433 [+] Added Linux FSPlatformDevices implementation 2024-07-05 10:39:24 +01:00
3143f3d2eb [*] Handling of edge case special dirs under Torbalds OS 2024-07-04 18:54:55 +01:00
937016e9f3 [*] Harden awaiting unlock via RuntimeWaitForSecondaryTick() usage under linux 2024-07-03 20:07:59 +01:00
cb69a7e737 [*] Solve two Linux regressions introduced/poorly worked around in: e7597b8463, 592afe00a7 2024-07-02 05:16:49 +01:00
e7597b8463 [+] Added basic posix name resolution for when glibc isnt present or when being built on non-glibc toolchains 2024-07-01 12:37:38 +01:00
592afe00a7 [*] AuNet: Missing Linux TODO block; harden two callbacks missing a try/catch 2024-07-01 11:54:18 +01:00
3bae761e50 [*] AuIO harden 2024-07-01 11:52:12 +01:00
fa900d0f78 [*] Linux: Update antidbus message for clarity 2024-06-30 04:40:37 +01:00
a1672a33d7 [*] Linux alternative dynamic loader: AuProcess main process path has to be pulled from the procmap instead of arg[0] 2024-06-29 16:06:42 +01:00
05737d61fe [*] Linux hack: drop arg[0] when the string contains ld-Aurora 2024-06-29 14:32:20 +01:00
bd034aec31 [*] AuOSThread harden set piro and name against race conditions
amend: i didnt want to lock so deep of a callstack, but oh well.
amend: win32 regression
2024-06-29 07:33:30 +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
a1c1e88f51 [*] Unify/make consistent one compression out of memory space to write into error as code 0x69, string="OOM" 2024-05-30 01:15:37 +01:00
85cf0a793a [*] Release AuAsyncTimer callback references as soon as the object is canceled 2024-05-28 18:18:54 +01:00
78d4ce3d58 [*] You stupid fuck. How was this not committed? 2024-05-27 20:57:09 +01:00
efa26dd99d [*] YieldPollNs nonzero timeout check 2024-05-27 16:02:54 +01:00
dbacc71870 [*] Reformat these lines 2024-05-27 15:47:18 +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
5ab97be4e3 [*] Harden Stack.Win32.cpp
Homer running[3]
2024-05-26 17:15:39 +01:00
30b89f1bd7 [*] Security: use AuCodepointsReplaceAll instead of AuReplaceAll under the loggers mitigations 2024-05-21 04:59:05 +01:00
ba36ea4ef1 [+] Added AuOptional<AuUInt> optMaxRecursion to AuFS::ReadDirRecursive 2024-05-19 17:12:14 +01:00
9b26eea886 [+] IAsyncTimer::SetCatchUp(bool bCatchUp) 2024-05-19 17:01:51 +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
26209ea066 [*] Prevent SysPanic/SysAsserts under Windows Vista and beta builds of Windows 7 during locale lookup. This shouldn't impact Windows XP. Perhaps Winserver 2003, beta 7, and other releases of older Windows could crash on start up.
Unrelated note, Windows XP does in fact have NLS support with these APIs; we just need to use "nlsdl.dll". Fortunately, we already have Windows XP paths, and that DLL is nothing more than a 24kb stub that calls GetLocaleInfoW. Something we already do ourselves.
2024-05-13 21:57:00 +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
316fb3f6b2 [*] (Disabled) bad optimization: possibility to disable spinning of the auasync task scheduler. Worsens CPU usage when spinning is desired on the target platform, when paired with the two platforms this optimization would've benefited, Windows 7 and Linux. 2024-05-05 22:01:19 +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
a35c1f165a [+] AuAsync::ThreadPool::Wakeup(WorkerId_t) 2024-05-03 11:32:31 +01:00
373ccc3660 [+] C++20 QOL changes to AuFutures including AuFuture<X, Y>::BlockUntilComplete()
[*] Added additional check for failing dependencies of IWorkItems. Not required for fails to cascade, but this is nice to have here.
2024-05-03 09:28:14 +01:00
195af26aa4 [*] C++20 coroutine support: recursive callstack 2024-05-01 20:09:35 +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
f13c344249 [*] DemangleName should use a RONString 2024-04-28 16:44:16 +01:00
9d4c5a8cfc [*] (optimize) RunOSWaitOnAddressEQNoTimedNoErrors wasn't NT aware 2024-04-28 14:24:13 +01:00
7e9a9417db [*] ROXTL now has AuRONString
[*] Envvars: empty value is now valid
2024-04-28 13:22:47 +01:00
54904957f2 [+] IRandomDevice.NextArrayVec2Fast
[+] IRandomDevice.NextArrayVec3Fast
[+] IRandomDevice.NextArrayVec4Fast
[+] AuRNG.RngArrayVec2Fast
[+] AuRNG.RngArrayVec3Fast
[+] AuRNG.RngArrayVec4Fast
2024-04-24 15:27:19 +01:00
298ab88648 [+] AuMemoryView::TryPromoteToSharedView
[+] AuMemoryView::TryDemoteFromSharedView
[+] AuMemory::RequestHeapOfSharedRegion
2024-04-24 00:52:58 +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
0a90fd1a25 [*] Force compile time optimizations under RNG 2024-04-23 22:24:07 +01:00
442a5f31eb [+] AuRNG::RngArrayI32RangeFast
[+] AuRNG::RngArrayU32RangeFast
[+] AuRNG::RngArrayI64RangeFast
[+] AuRNG::RngArrayU64RangeFast
[+] IRandomDevice::NextArrayI32RangeFast
[+] IRandomDevice::NextArrayU32RangeFast
[+] IRandomDevice::NextArrayI64RangeFast
[+] IRandomDevice::NextArrayU64RangeFast
2024-04-22 22:05:01 +01:00
5f9681c9e3 [+] AuRNG::IRandomDevice::NextU64Range
[+] AuRNG::IRandomDevice::NextI64Range
[+] AuRNG::IRandomDevice::NextVec2
[+] AuRNG::IRandomDevice::NextVec2Sorted
[+] AuRNG::IRandomDevice::NextVec3
[+] AuRNG::IRandomDevice::NextVec3Sorted
[+] AuRNG::IRandomDevice::NextVec4
[+] AuRNG::IRandomDevice::NextVec4Sorted
[+] AuRNG::IRandomDevice::NextArrayI64Range
[+] AuRNG::IRandomDevice::NextArrayU64Range
[+] AuRNG::IRandomDevice::NextArrayU32Mask
[+] AuRNG::IRandomDevice::NextArrayU64Mask
[+] AuRNG::IRandomDevice::NextArrayI64
[+] AuRNG::IRandomDevice::NextArrayU64
[+] AuRNG::IRandomDevice::NextArrayVec2
[+] AuRNG::IRandomDevice::NextArrayVec2Sorted
[+] AuRNG::IRandomDevice::NextArrayVec3
[+] AuRNG::IRandomDevice::NextArrayVec3Sorted
[+] AuRNG::IRandomDevice::NextArrayVec4
[+] AuRNG::IRandomDevice::NextArrayVec4Sorted
[+] AuRNG::IRandomDevice::NextArrayVec4SortedFast
[+] AuRNG::IRandomDevice::NextArrayVec3SortedFast
[+] AuRNG::IRandomDevice::NextArrayVec2SortedFast
[+] AuRNG::IRandomDevice::NextArrayDoubleRangeFast
[+] AuRNG::IRandomDevice::NextArrayDecimalsFast
[+] AuRNG::RngU64Range
[+] AuRNG::RngI64Range
[+] AuRNG::RngVec2
[+] AuRNG::RngVec2Sorted
[+] AuRNG::RngVec3
[+] AuRNG::RngVec3Sorted
[+] AuRNG::RngVec4
[+] AuRNG::RngVec4Sorted
[+] AuRNG::RngArrayI64Range
[+] AuRNG::RngArrayU64Range
[+] AuRNG::RngArrayU32Mask
[+] AuRNG::RngArrayU64Mask
[+] AuRNG::RngArrayI64
[+] AuRNG::RngArrayU64
[+] AuRNG::RngArrayVec2
[+] AuRNG::RngArrayVec2Sorted
[+] AuRNG::RngArrayVec3
[+] AuRNG::RngArrayVec3Sorted
[+] AuRNG::RngArrayVec4
[+] AuRNG::RngArrayVec4Sorted
[+] AuRNG::RngArrayVec4SortedFast
[+] AuRNG::RngArrayVec3SortedFast
[+] AuRNG::RngArrayVec2SortedFast
[+] AuRNG::RngArrayDoubleRangeFast
[+] AuRNG::RngArrayDecimalsFast
2024-04-22 06:02:56 +01:00
b88e28aea0 [*] IOPipeWork completion group problem 2024-04-22 02:51:17 +01:00
579185ec10 [*] Harden AuIOAdapterAsyncStream 2024-04-21 13:23:58 +01:00
c26eaf86a7 [*] Minor UWP progress 2024-04-21 11:52:24 +01:00
b47cf9f181 [*] DebugBenchmark and ITTYConsole now uses ROStrings 2024-04-21 06:02:47 +01:00
aa04b11a57 [*] Fix LoadPackagedLibrary's pString 2024-04-20 07:10:09 +01:00
6122525ed3 [*] Fix AuProcess deadlock and parity issue between some unix loaders and Windows
[*] Slight UWP progress in AuProcessMap.NT.cpp (not really)
2024-04-20 06:55:46 +01:00
85cf7d7a4c [*] Missed u 2024-04-20 02:54:31 +01:00
e7d9df3cab [*] Improve alt-AuString allocator awareness 2024-04-20 02:29:49 +01:00
83f34b0c47 [*] I was right. String views are [mostly] pointless (*)
03:28:55:638  17>2 of 53388 functions (<0.1%) were compiled, the rest were copied from previous compilation.
03:28:55:638  17>  0 functions were new in current compilation
03:28:55:638  17>  65 functions had inline decision re-evaluated but remain unchanged
03:28:56:749  17>Finished generating code

the header of const AuString & is the same as std::string_view therefore nothing changes. in fact, we still need to alloc strings a bunch of times for a zero terminated string. worse, <c++20 always allocs each time we want to access a hashmap with o(1) lookup, making small hashmaps kinda pointless when we always have to alloc+copy (thx std)

perhaps this will help some language binders
2024-04-19 05:58:08 +01:00
616fc54531 [*] Hash WELL outputs (ABI break once again >:( )
[*] Rework/Fix WELL_NextBytes (large) improperly accounting for small buffers (this internal function is publicly visible. WELL_NextLong isn't going to save us)
2024-04-18 05:06:40 +01:00
7cb9355805 [*] Harden RequestHeapOfRegion 2024-04-15 18:04:44 +01:00
78f59f5cef [*] Increase NT block symbol table size 2024-04-15 17:22:47 +01:00
88a07714e5 [*] Made conapi requirement under Win32 optional and completely nuke the code when building under non-win32 targets 2024-04-14 23:11:20 +01:00
528cb01679 [*] INetAdapter refactor: lets not assume all adapters have IP addresses 2024-04-14 22:02:38 +01:00
971b007ab9 [+] PosixFDYeetus() 2024-04-14 19:48:40 +01:00
0164919cd9 [+] while_bc 2024-04-13 22:49:05 +01:00