Message ID | 20170221093000.22802-1-chris@chris-wilson.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On ti, 2017-02-21 at 09:30 +0000, Chris Wilson wrote: > 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> <SNIP> > @@ -151,6 +151,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 I'd carry over the __must_check flag, with that; Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Regards, Joonas > +reservation_object_trylock(struct reservation_object *obj) > +{ > + return ww_mutex_trylock(&obj->lock); > +} > + > +/** > * reservation_object_unlock - unlock the reservation object > * @obj: the reservation object > *
On Tue, Feb 21, 2017 at 02:38:07PM +0200, Joonas Lahtinen wrote: > On ti, 2017-02-21 at 09:30 +0000, Chris Wilson wrote: > > 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> > > <SNIP> > > > @@ -151,6 +151,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 > > I'd carry over the __must_check flag, with that; Done and applied, thanks. -Daniel > > Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> > > Regards, Joonas > > > +reservation_object_trylock(struct reservation_object *obj) > > +{ > > + return ww_mutex_trylock(&obj->lock); > > +} > > + > > +/** > > * reservation_object_unlock - unlock the reservation object > > * @obj: the reservation object > > * > -- > Joonas Lahtinen > Open Source Technology Center > Intel Corporation
diff --git a/include/linux/reservation.h b/include/linux/reservation.h index 24da961b085d..28d544364e52 100644 --- a/include/linux/reservation.h +++ b/include/linux/reservation.h @@ -151,6 +151,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 +reservation_object_trylock(struct reservation_object *obj) +{ + return ww_mutex_trylock(&obj->lock); +} + +/** * reservation_object_unlock - unlock the reservation object * @obj: the reservation object *
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> --- include/linux/reservation.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)