1
0
Fork 0
mirror of https://github.com/LadybirdBrowser/ladybird.git synced 2025-06-09 17:44:56 +09:00
ladybird/Userland/Libraries
kleines Filmröllchen 6b13436ef6 LibCore: Introduce SharedSingleProducerCircularQueue
This new class with an admittedly long OOP-y name provides a circular
queue in shared memory. The queue is a lock-free synchronous queue
implemented with atomics, and its implementation is significantly
simplified by only accounting for one producer (and multiple consumers).
It is intended to be used as a producer-consumer communication
datastructure across processes. The original motivation behind this
class is efficient short-period transfer of audio data in userspace.

This class includes formal proofs of several correctness properties of
the main queue operations `enqueue` and `dequeue`. These proofs are not
100% complete in their existing form as the invariants they depend on
are "handwaved". This seems fine to me right now, as any proof is better
than no proof :^). Anyways, the proofs should build confidence that the
implemented algorithms, which are only roughly based on existing work,
operate correctly in even the worst-case concurrency scenarios.
2022-04-21 13:55:00 +02:00
..
LibArchive LibArchive: Stop null-terminating StringView tar file header fields 2022-04-13 19:51:57 +02:00
LibAudio LibCore+Everywhere: Make Core::Stream::read() return Bytes 2022-04-16 13:27:51 -04:00
LibC LibC: Stub out posix_memalign() 2022-04-21 11:50:38 +02:00
LibCards LibGfx: Move other font-related files to LibGfx/Font/ 2022-04-09 23:48:18 +02:00
LibChess LibChess: Change UCI::Command::Type to enum class 2022-04-03 17:36:48 +01:00
LibCompress LibCompress: Change DeflateSpecialCodeLengths to constexpr variables 2022-04-03 17:36:48 +01:00
LibConfig Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibCore LibCore: Introduce SharedSingleProducerCircularQueue 2022-04-21 13:55:00 +02:00
LibCoredump Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibCpp LibCpp: Parse inheritance 2022-04-17 10:09:23 +04:30
LibCrypt Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibCrypto LibCrypto: Implement custom BitStringView for ASN.1 decoder 2022-04-17 10:10:19 +04:30
LibDebug Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibDesktop Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibDeviceTree
LibDiff Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibDl Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibDNS LibDNS: Remove the 'DNS' prefix from the various type and class names 2022-04-15 16:34:26 +01:00
LibDSP AK+Everywhere: Add sincos and use it in some places 2022-03-15 11:39:42 +01:00
LibEDID Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibELF LibELF: Look up symbols in all global modules 2022-04-03 23:25:39 +01:00
LibFileSystemAccessClient Userland: Rename WindowServerConnection=>ConnectionToWindowServer 2022-02-25 22:35:12 +01:00
LibGemini LibCore+Everywhere: Make Core::Stream read_until() return Bytes 2022-04-16 13:27:51 -04:00
LibGfx LibGfx: Avoid signed comparison in find_largest_image 2022-04-20 16:01:09 +03:00
LibGL LibGL: Set W-coordinate to 1 in glRect* 2022-04-20 14:12:56 +02:00
LibGPU LibGL+LibSoftGPU: Add GL_ADD Texture Environment 2022-04-09 11:40:33 +02:00
LibGUI LibGUI: Remove Tile.date_time member from Calendar 2022-04-20 18:37:56 +02:00
LibHTTP LibCore+Everywhere: Make Core::Stream read_until() return Bytes 2022-04-16 13:27:51 -04:00
LibImageDecoderClient Userland: Rename IPC::ServerConnection=>IPC::ConnectionToServer 2022-02-25 22:35:12 +01:00
LibIMAP Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibIPC LibCore+LibIPC: Make Core::Stream read_without_waiting() return Bytes 2022-04-16 13:27:51 -04:00
LibJS LibJS: De-duplicate ClassFieldDefinition Records 2022-04-20 00:08:32 +02:00
LibKeyboard Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibLine LibLine: Reset next suggestion index when resetting suggestions 2022-04-18 19:53:10 +04:30
LibM Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibMain LibMain: Statically link LibMain 2022-03-24 03:04:57 +01:00
LibMarkdown Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibPCIDB Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibPDF LibGfx: Move ScaledFont and new base class VectorFont out of TTF 2022-04-09 23:48:18 +02:00
LibProtocol LibCore+Everywhere: Make Core::Stream::read() return Bytes 2022-04-16 13:27:51 -04:00
LibPthread Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibRegex Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibSanitizer Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibSoftGPU LibSoftGPU: Check for bottom edge in top-left rule in Device 2022-04-20 14:12:56 +02:00
LibSQL Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibSymbolication Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibSyntax Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibSystem
LibTest Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibTextCodec Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibThreading Libraries: Use default constructors/destructors in LibThreading 2022-03-13 22:34:38 +01:00
LibTimeZone
LibTLS LibTLS: Cleanup of verify_chain and verify_certificate_pair 2022-04-17 10:10:19 +04:30
LibUnicode LibUnicode: Upgrade to CLDR version 41.0.0 2022-04-07 08:29:10 -04:00
LibUSBDB Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibVideo Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibVT LibGfx: Move other font-related files to LibGfx/Font/ 2022-04-09 23:48:18 +02:00
LibWasm Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LibWeb LibWeb: Fix various spec comment inconsistencies 2022-04-20 19:49:01 +02:00
LibWebSocket LibCore+Everywhere: Make Core::Stream read_line() return StringView 2022-04-16 13:27:51 -04:00
LibX86 LibX86+disasm: Use an output format closer to objdump 2022-04-07 16:50:34 +02:00
LibXML LibXML: Add a fairly basic XML parser 2022-03-28 23:11:48 +02:00
CMakeLists.txt LookupServer: Move DNS related code into new LibDNS library 2022-04-15 16:34:26 +01:00