Commit Graph

1970 Commits

Author SHA1 Message Date
e62a99777f [*] WaitMultipleLoopSourcesEx (any) fixes 2024-09-09 12:40:49 +01:00
634eb35959 [+] IOConfig::bAPCUseCoroutineStack 2024-09-09 08:16:19 +01:00
89686eb022 [*] Use PMR allocators instead 2024-09-09 06:52:38 +01:00
0571aa8dd4 [+] AU_LOCK_GLOBAL_GUARD
[+] AuThreading::GetShutdownReadLock()
2024-09-09 03:46:38 +01:00
16409d449b [*] Build regression (4d4f5e2501) and amend (35761edaec)
v0.3.1178
2024-09-08 23:35:12 +01:00
35761edaec [+] AuIO::Loop::NewLSTimerHighResolution
[*] ILSTimer::UpdateTime -> ILSTimer::UpdateTimeWall
[*] ILSTimer::UpdateTimeNs -> ILSTimer::UpdateTimeWallNs
[+] ILSTimer::UpdateTimeSteady
[+] ILSTimer::UpdateTimeSteadyNs
2024-09-08 07:26:23 +01:00
4d4f5e2501 [+] ILoopSource::IsSignaledExt(...)
[+] ILoopSource::WaitOnExt(...)
[+] ILoopSource::WaitOnAbsExt(...)
2024-09-07 22:45:34 +01:00
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
aafb64e740 [+] AuMemoryView::CopyInto
[+] AuMemoryView::CopyFrom
[+] AuMemoryViewStream::CopyStreamInto
[+] AuMemoryViewStream::CopyStreamFrom
2024-08-27 20:33:00 +01:00
d99c1032da [*] Regression: AuROXTL string view has a different interpretation of what remove prefix/suffix should be. Fix SplitNewlines
[*] Harden SplitString & SplitStringDelm, do not splice UTF8 sequences
2024-08-22 19:15:51 +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
2c3c7b04e5 [*] Amend Loop.hpp comments 2024-08-11 22:22:43 +01:00
23a80b8039 [*] Refactor ConditionEx -> IFlexibleConditionVariable 2024-08-08 20:21:03 +01:00
adfca81335 [*] Fuck you 2024-08-08 20:17:52 +01:00
da7fd881a6 [*] Update behaviour of CppHeapWrapper to make it moron proof 2024-08-07 21:39:42 +01:00
9a855f36d0 [*] You fucking donut 2024-08-07 01:42:42 +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
a995c37e81 [*] Fixup half-assed/rushed alloc class with alignment in the .hpp to .inl breakout commit (ced9e0be)
(sure, it cannot work to realign structs with c++ operator[] overloading; however, we need this to prevent excessive allocations when cloning a U8 memory view of alignment)
2024-07-19 09:01:20 +01:00
2628784ff6 [*] Refactor heap stats 2024-07-19 08:25:30 +01:00
1fb355520e [*] Made AuMemoryViewRead/Writes to bytebuffer less ambiguous 2024-07-19 08:24:51 +01:00
2d2523e679 [*] Another build regression 2024-07-16 23:58:44 +01:00
c57a90929a [*] Build regression 2024-07-16 00:54:07 +01:00
8df3f6970b [+] Heap::Clone(Heap *[, ...]) 2024-07-15 00:16:13 +01:00
ced9e0be17 [*] Optimize global process heap aliases
[*] Split AuMemory::Heap impl into .inl file
2024-07-15 00:15:35 +01:00
f2acc253b7 [*] Amend [*] Linux: Update antidbus message for clarity 2024-07-15 00:12:53 +01:00
3749702e34 [*] SharableByteBuffer constructors must be inline 2024-07-13 18:51:07 +01:00
e665720f24 [*] Update AuMemory::SharableByteBuffer to be useful with the transition to AuSPtr<AuMemoryViewXXX>'less APIs 2024-07-13 17:08:45 +01:00
3d652ed605 [*] af5c8e86c0 20hrs ago: AuSPtr<AuMemoryViewXXX>s werent fully eliminated 2024-07-13 16:34:44 +01:00
124e9d1d0a [*] Fix main process heap fragmentation caused by shared pointer blocks, always allocate from within the heap object 2024-07-13 03:07:02 +01:00