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