ladybird/Tests/LibCore/CMakeLists.txt
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

20 lines
617 B
CMake

set(TEST_SOURCES
TestLibCoreArgsParser.cpp
TestLibCoreFileWatcher.cpp
TestLibCoreIODevice.cpp
TestLibCoreDeferredInvoke.cpp
TestLibCoreStream.cpp
TestLibCoreFilePermissionsMask.cpp
TestLibCoreSharedSingleProducerCircularQueue.cpp
)
foreach(source IN LISTS TEST_SOURCES)
serenity_test("${source}" LibCore)
endforeach()
# NOTE: Required because of the LocalServer tests
target_link_libraries(TestLibCoreStream LibThreading)
target_link_libraries(TestLibCoreSharedSingleProducerCircularQueue LibThreading)
install(FILES long_lines.txt 10kb.txt small.txt DESTINATION usr/Tests/LibCore)