diff options
author | kleines Filmröllchen <filmroellchen@serenityos.org> | 2022-01-23 23:31:51 +0100 |
---|---|---|
committer | Linus Groh <mail@linusgroh.de> | 2022-04-21 13:55:00 +0200 |
commit | 6b13436ef64b8ae91f71b3fed2e8555f733d7998 (patch) | |
tree | 2473662c9b2c8962d1bf926c03106299ea336e0f /Meta/CMake/all_the_debug_macros.cmake | |
parent | b0a2572577af0132bd3a9408ea05219fa093a79b (diff) | |
download | serenity-6b13436ef64b8ae91f71b3fed2e8555f733d7998.zip |
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.
Diffstat (limited to 'Meta/CMake/all_the_debug_macros.cmake')
-rw-r--r-- | Meta/CMake/all_the_debug_macros.cmake | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/Meta/CMake/all_the_debug_macros.cmake b/Meta/CMake/all_the_debug_macros.cmake index 6f3bcf3350..923d54e306 100644 --- a/Meta/CMake/all_the_debug_macros.cmake +++ b/Meta/CMake/all_the_debug_macros.cmake @@ -164,6 +164,7 @@ set(SERVICE_DEBUG ON) set(SH_DEBUG ON) set(SHELL_JOB_DEBUG ON) set(SH_LANGUAGE_SERVER_DEBUG ON) +set(SHARED_QUEUE_DEBUG ON) set(SIGNAL_DEBUG ON) set(SLAVEPTY_DEBUG ON) set(SMP_DEBUG ON) |