diff options
| author | Emil Tsalapatis <emil@etsalapatis.com> | 2026-06-05 18:20:19 -0400 |
|---|---|---|
| committer | Alexei Starovoitov <ast@kernel.org> | 2026-06-05 20:32:21 -0700 |
| commit | 57c6ace8395d53b9bae6fb21e0bd3f536342c16e (patch) | |
| tree | cbc1deadd64f7d3b35ad58f1bc94d957aa2cc117 /include/linux/debugobjects.h | |
| parent | 6c3e8a4d476521bc33362e90b2569548f1adb7a4 (diff) | |
selftests/bpf: libarena: Add spmc queue data structure
Expand libarena with a single producer multiple consumer deque data
structure. This is a single producer, multiple consumer lockless structure
that permits efficient work stealing. The structure is a Lev-Chase queue,
so it is lock-free and wait-free.
The data structure exposes three main calls. two of them are available to
the thread owning the queue and one available to all threads in the program:
spmc_owner_push(): Push an item to the top of the queue.
spmc_owner_pop(): Pop an item from the top of the queue.
spmc_steal(): Steal a thread from the bottom of the queue from
any thread.
Note that the queue is not really FIFO for all consumers, since
non-owners of the queue can only work steal from the bottom.
Signed-off-by: Emil Tsalapatis <emil@etsalapatis.com>
Link: https://lore.kernel.org/r/20260605222020.5231-3-emil@etsalapatis.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'include/linux/debugobjects.h')
0 files changed, 0 insertions, 0 deletions
