Userspace RCU Concurrent Data Structures (CDS) API
by Mathieu Desnoyers and Paul E. McKenney


This document describes briefly the data structures contained with the
userspace RCU library.

urcu/list.h:

	Doubly-linked list, which requires mutual exclusion on updates
	and reads.

urcu/rculist.h:

	Doubly-linked list, which requires mutual exclusion on updates,
	allows RCU read traversals.
	
urcu/hlist.h:

	Doubly-linked list, with single pointer list head. Requires
	mutual exclusion on updates and reads. Useful for implementing
	hash tables. Downside over list.h: lookup of tail in O(n).

urcu/rcuhlist.h:

	Doubly-linked list, with single pointer list head. Requires
	mutual exclusion on updates, allows RCU read traversals. Useful
	for implementing hash tables. Downside over rculist.h: lookup of
	tail in O(n).

urcu/rculfqueue.h:

	RCU queue with lock-free enqueue, lock-free dequeue. RCU used to
	provide existance guarantees.

urcu/wfqueue.h:

	Queue with wait-free enqueue, blocking dequeue. This queue does
	_not_ use RCU.

urcu/rculfstack.h:

	RCU stack with lock-free push, lock-free dequeue. RCU used to
	provide existance guarantees.

urcu/wfstack.h:

	Stack with wait-free enqueue, blocking dequeue. This stack does
	_not_ use RCU.

urcu/rculfhash.h:

	Lock-Free Resizable RCU Hash Table. RCU used to provide
	existance guarantees. Provides scalable updates, and scalable
	RCU read-side lookups and traversals. Unique and duplicate keys
	are supported. Provides "uniquify add" and "replace add"
	operations, along with associated read-side traversal uniqueness
	guarantees. Automatic hash table resize based on number of
	elements is supported. See the API for more details.
