uatomic/x86: Remove redundant memory barriers
[urcu.git] / include / urcu / defer.h
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
20 extern "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
37 extern void defer_rcu(void (*fct)(void *p), void *p);
38
39 /*
40 * Thread registration for reclamation.
41 */
42 extern int rcu_defer_register_thread(void);
43 extern void rcu_defer_unregister_thread(void);
44 extern void rcu_defer_barrier(void);
45 extern void rcu_defer_barrier_thread(void);
46
47 #ifdef __cplusplus
48 }
49 #endif
50
51 #endif /* _URCU_DEFER_H */
This page took 0.029995 seconds and 5 git commands to generate.