uatomic/x86: Remove redundant memory barriers
[urcu.git] / doc / cds-api.md
CommitLineData
d001c886
MJ
1<!--
2SPDX-FileCopyrightText: 2023 EfficiOS Inc.
3
4SPDX-License-Identifier: CC-BY-4.0
5-->
6
dcb9c05a
PP
7Userspace RCU Concurrent Data Structures (CDS) API
8==================================================
9
10by Mathieu Desnoyers and Paul E. McKenney
11
12This document describes briefly the data structures contained with the
13userspace RCU library.
14
15
16Data structure files
17--------------------
18
19### `urcu/list.h`
20
21Doubly-linked list, which requires mutual exclusion on
22updates and reads.
23
24
25### `urcu/rculist.h`
26
27Doubly-linked list, which requires mutual exclusion on
28updates, allows RCU read traversals.
29
30
31### `urcu/hlist.h`
32
33Doubly-linked list, with single pointer list head. Requires
34mutual exclusion on updates and reads. Useful for implementing hash tables.
35Downside over `list.h`: lookup of tail in O(n).
36
37
38### `urcu/rcuhlist.h`
39
40Doubly-linked list, with single pointer list head.
41Requires mutual exclusion on updates, allows RCU read traversals. Useful
a5a99662 42for implementing hash tables. Downside over `rculist.h`: lookup of tail in O(n).
dcb9c05a
PP
43
44
45### `urcu/wfstack.h`
46
72886af7 47Stack with wait-free push and wait-free pop\_all. Both
dcb9c05a
PP
48blocking and non-blocking pop and traversal operations are provided. This
49stack does _not_ specifically rely on RCU. Various synchronization techniques
50can be used to deal with pop ABA. Those are detailed in the API.
51
52
53### `urcu/wfcqueue.h`
54
55Concurrent queue with wait-free enqueue. Both blocking and
56non-blocking dequeue, splice (move all elements from one queue
57to another), and traversal operations are provided.
58
59This queue does _not_ specifically rely on RCU. Mutual exclusion
60is used to protect dequeue, splice (from source queue) and
61traversal (see API for details).
62
63 - Note: deprecates `urcu/wfqueue.h`.
64
65
66### `urcu/lfstack.h`
67
72886af7 68Stack with lock-free push, lock-free pop, wait-free pop\_all,
dcb9c05a
PP
69wait-free traversal. Various synchronization techniques can be
70used to deal with pop ABA. Those are detailed in the API.
71This stack does _not_ specifically rely on RCU.
72
73 - Note: deprecates `urcu/rculfstack.h`.
74
75
76### `urcu/rculfqueue.h`
77
78RCU queue with lock-free enqueue, lock-free dequeue.
79This queue relies on RCU for existence guarantees.
80
81
82### `urcu/rculfhash.h`
83
84Lock-Free Resizable RCU Hash Table. RCU used to provide
f99c6e92 85existence guarantees. Provides scalable updates, and scalable
dcb9c05a
PP
86RCU read-side lookups and traversals. Unique and duplicate keys
87are supported. Provides "uniquify add" and "replace add"
88operations, along with associated read-side traversal uniqueness
89guarantees. Automatic hash table resize based on number of
90elements is supported. See the API for more details.
This page took 0.039161 seconds and 5 git commands to generate.