diff options
| author | Oleg Nesterov <[email protected]> | 2015-08-21 19:42:52 +0200 |
|---|---|---|
| committer | Paul E. McKenney <[email protected]> | 2015-10-06 11:25:21 -0700 |
| commit | 07899a6e5f56136028c44a57ad0451e797365ac3 (patch) | |
| tree | 48fc600387bae30a64284ae0d7acfb767277cfde /include/linux/rcu_sync.h | |
| parent | 3a518b76af7bb411efe6dd090fbf098e29accb2e (diff) | |
rcu_sync: Introduce rcu_sync_dtor()
This commit allows rcu_sync structures to be safely deallocated,
The trick is to add a new ->wait field to the gp_ops array.
This field is a pointer to the rcu_barrier() function corresponding
to the flavor of RCU in question. This allows a new rcu_sync_dtor()
to wait for any outstanding callbacks before freeing the rcu_sync
structure.
Signed-off-by: Oleg Nesterov <[email protected]>
Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
Signed-off-by: Paul E. McKenney <[email protected]>
Reviewed-by: Josh Triplett <[email protected]>
Diffstat (limited to 'include/linux/rcu_sync.h')
| -rw-r--r-- | include/linux/rcu_sync.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/rcu_sync.h b/include/linux/rcu_sync.h index 1f2d4fc30b04..8069d6468bc4 100644 --- a/include/linux/rcu_sync.h +++ b/include/linux/rcu_sync.h @@ -62,6 +62,7 @@ static inline bool rcu_sync_is_idle(struct rcu_sync *rsp) extern void rcu_sync_init(struct rcu_sync *, enum rcu_sync_type); extern void rcu_sync_enter(struct rcu_sync *); extern void rcu_sync_exit(struct rcu_sync *); +extern void rcu_sync_dtor(struct rcu_sync *); #define __RCU_SYNC_INITIALIZER(name, type) { \ .gp_state = 0, \ |
