extras/abi: license data files under CC-1.0
[urcu.git] / include / urcu / defer.h
... / ...
CommitLineData
1// SPDX-FileCopyrightText: 2009 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
2// SPDX-FileCopyrightText: 2009 Paul E. McKenney, IBM Corporation.
3//
4// SPDX-License-Identifier: LGPL-2.1-or-later
5
6#ifndef _URCU_DEFER_H
7#define _URCU_DEFER_H
8
9/*
10 * Userspace RCU header - deferred execution
11 *
12 * This header is meant to be included indirectly through a liburcu
13 * flavor header.
14 */
15
16#include <stdlib.h>
17#include <pthread.h>
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
23/*
24 * Note: the defer_rcu() API is currently EXPERIMENTAL. It may change in the
25 * future.
26 *
27 * Important !
28 *
29 * Each thread queuing memory reclamation must be registered with
30 * rcu_defer_register_thread(). rcu_defer_unregister_thread() should be
31 * called before the thread exits.
32 *
33 * *NEVER* use defer_rcu() within a RCU read-side critical section, because this
34 * primitive need to call synchronize_rcu() if the thread queue is full.
35 */
36
37extern void defer_rcu(void (*fct)(void *p), void *p);
38
39/*
40 * Thread registration for reclamation.
41 */
42extern int rcu_defer_register_thread(void);
43extern void rcu_defer_unregister_thread(void);
44extern void rcu_defer_barrier(void);
45extern void rcu_defer_barrier_thread(void);
46
47#ifdef __cplusplus
48}
49#endif
50
51#endif /* _URCU_DEFER_H */
This page took 0.037802 seconds and 4 git commands to generate.