Lines Matching refs:ssp

28 int __init_srcu_struct(struct srcu_struct *ssp, const char *name,
31 #define init_srcu_struct(ssp) \
35 __init_srcu_struct((ssp), #ssp, &__srcu_key); \
41 int init_srcu_struct(struct srcu_struct *ssp);
54 void call_srcu(struct srcu_struct *ssp, struct rcu_head *head,
56 void cleanup_srcu_struct(struct srcu_struct *ssp);
57 int __srcu_read_lock(struct srcu_struct *ssp) __acquires(ssp);
58 void __srcu_read_unlock(struct srcu_struct *ssp, int idx) __releases(ssp);
59 void synchronize_srcu(struct srcu_struct *ssp);
60 unsigned long get_state_synchronize_srcu(struct srcu_struct *ssp);
61 unsigned long start_poll_synchronize_srcu(struct srcu_struct *ssp);
62 bool poll_state_synchronize_srcu(struct srcu_struct *ssp, unsigned long cookie);
65 int __srcu_read_lock_nmisafe(struct srcu_struct *ssp) __acquires(ssp);
66 void __srcu_read_unlock_nmisafe(struct srcu_struct *ssp, int idx) __releases(ssp);
68 static inline int __srcu_read_lock_nmisafe(struct srcu_struct *ssp)
70 return __srcu_read_lock(ssp);
72 static inline void __srcu_read_unlock_nmisafe(struct srcu_struct *ssp, int idx)
74 __srcu_read_unlock(ssp, idx);
84 * @ssp: The srcu_struct structure to check
98 static inline int srcu_read_lock_held(const struct srcu_struct *ssp)
102 return lock_is_held(&ssp->dep_map);
133 static inline int srcu_read_lock_held(const struct srcu_struct *ssp)
149 void srcu_check_nmi_safety(struct srcu_struct *ssp, bool nmi_safe);
151 static inline void srcu_check_nmi_safety(struct srcu_struct *ssp,
159 * @ssp: pointer to the srcu_struct, which is used to check that we
168 #define srcu_dereference_check(p, ssp, c) \
170 (c) || srcu_read_lock_held(ssp), __rcu)
175 * @ssp: pointer to the srcu_struct, which is used to check that we
182 #define srcu_dereference(p, ssp) srcu_dereference_check((p), (ssp), 0)
187 * @ssp: pointer to the srcu_struct, which is used to check that we
190 #define srcu_dereference_notrace(p, ssp) srcu_dereference_check((p), (ssp), 1)
194 * @ssp: srcu_struct in which to register the new reader.
209 static inline int srcu_read_lock(struct srcu_struct *ssp) __acquires(ssp)
213 srcu_check_nmi_safety(ssp, false);
214 retval = __srcu_read_lock(ssp);
215 srcu_lock_acquire(&ssp->dep_map);
221 * @ssp: srcu_struct in which to register the new reader.
226 static inline int srcu_read_lock_nmisafe(struct srcu_struct *ssp) __acquires(ssp)
230 srcu_check_nmi_safety(ssp, true);
231 retval = __srcu_read_lock_nmisafe(ssp);
232 rcu_try_lock_acquire(&ssp->dep_map);
238 srcu_read_lock_notrace(struct srcu_struct *ssp) __acquires(ssp)
242 srcu_check_nmi_safety(ssp, false);
243 retval = __srcu_read_lock(ssp);
249 * @ssp: srcu_struct in which to register the new reader.
268 static inline int srcu_down_read(struct srcu_struct *ssp) __acquires(ssp)
271 srcu_check_nmi_safety(ssp, false);
272 return __srcu_read_lock(ssp);
277 * @ssp: srcu_struct in which to unregister the old reader.
282 static inline void srcu_read_unlock(struct srcu_struct *ssp, int idx)
283 __releases(ssp)
286 srcu_check_nmi_safety(ssp, false);
287 srcu_lock_release(&ssp->dep_map);
288 __srcu_read_unlock(ssp, idx);
293 * @ssp: srcu_struct in which to unregister the old reader.
298 static inline void srcu_read_unlock_nmisafe(struct srcu_struct *ssp, int idx)
299 __releases(ssp)
302 srcu_check_nmi_safety(ssp, true);
303 rcu_lock_release(&ssp->dep_map);
304 __srcu_read_unlock_nmisafe(ssp, idx);
309 srcu_read_unlock_notrace(struct srcu_struct *ssp, int idx) __releases(ssp)
311 srcu_check_nmi_safety(ssp, false);
312 __srcu_read_unlock(ssp, idx);
317 * @ssp: srcu_struct in which to unregister the old reader.
323 static inline void srcu_up_read(struct srcu_struct *ssp, int idx)
324 __releases(ssp)
328 srcu_check_nmi_safety(ssp, false);
329 __srcu_read_unlock(ssp, idx);