aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/reservation.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/reservation.h')
-rw-r--r--include/linux/reservation.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/include/linux/reservation.h b/include/linux/reservation.h
index 21fc84d82d41..02166e815afb 100644
--- a/include/linux/reservation.h
+++ b/include/linux/reservation.h
@@ -167,6 +167,29 @@ reservation_object_lock(struct reservation_object *obj,
167} 167}
168 168
169/** 169/**
170 * reservation_object_lock_interruptible - lock the reservation object
171 * @obj: the reservation object
172 * @ctx: the locking context
173 *
174 * Locks the reservation object interruptible for exclusive access and
175 * modification. Note, that the lock is only against other writers, readers
176 * will run concurrently with a writer under RCU. The seqlock is used to
177 * notify readers if they overlap with a writer.
178 *
179 * As the reservation object may be locked by multiple parties in an
180 * undefined order, a #ww_acquire_ctx is passed to unwind if a cycle
181 * is detected. See ww_mutex_lock() and ww_acquire_init(). A reservation
182 * object may be locked by itself by passing NULL as @ctx.
183 */
184static inline int
185reservation_object_lock_interruptible(struct reservation_object *obj,
186 struct ww_acquire_ctx *ctx)
187{
188 return ww_mutex_lock_interruptible(&obj->lock, ctx);
189}
190
191
192/**
170 * reservation_object_trylock - trylock the reservation object 193 * reservation_object_trylock - trylock the reservation object
171 * @obj: the reservation object 194 * @obj: the reservation object
172 * 195 *