summaryrefslogtreecommitdiff
path: root/include/linux/reservation.h
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2017-02-21 09:30:00 +0000
committerDaniel Vetter <daniel.vetter@ffwll.ch>2017-02-26 22:43:44 +0100
commit2955b73def6712b693fc7ad82b34b3831faaa146 (patch)
tree95983cbd22bb21266c19ee0e4abafc4641d34190 /include/linux/reservation.h
parent5f15257689bfaacfc1ecd7d91a2e0515a5d3d104 (diff)
dma-buf/reservation: Wrap ww_mutex_trylock
In a similar fashion to reservation_object_lock() and reservation_object_unlock(), ww_mutex_trylock is also useful and so is worth wrapping for consistency. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Sumit Semwal <sumit.semwal@linaro.org> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> [danvet: Add __must_check Joonas wants.] Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/20170221093000.22802-1-chris@chris-wilson.co.uk
Diffstat (limited to 'include/linux/reservation.h')
-rw-r--r--include/linux/reservation.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/include/linux/reservation.h b/include/linux/reservation.h
index 2b5a4679daea..156cfd330b66 100644
--- a/include/linux/reservation.h
+++ b/include/linux/reservation.h
@@ -167,6 +167,26 @@ reservation_object_lock(struct reservation_object *obj,
}
/**
+ * reservation_object_trylock - trylock the reservation object
+ * @obj: the reservation object
+ *
+ * Tries to lock the reservation object for exclusive access and modification.
+ * Note, that the lock is only against other writers, readers will run
+ * concurrently with a writer under RCU. The seqlock is used to notify readers
+ * if they overlap with a writer.
+ *
+ * Also note that since no context is provided, no deadlock protection is
+ * possible.
+ *
+ * Returns true if the lock was acquired, false otherwise.
+ */
+static inline bool __must_check
+reservation_object_trylock(struct reservation_object *obj)
+{
+ return ww_mutex_trylock(&obj->lock);
+}
+
+/**
* reservation_object_unlock - unlock the reservation object
* @obj: the reservation object
*