X-Git-Url: https://code.grnet.gr/git/archipelago/blobdiff_plain/164d158628a64c98b49f4b699a5b8740ef30f4ce..2ddecabedce388e321dd00e490e266dc28467902:/xseg/xtypes/xlock.h diff --git a/xseg/xtypes/xlock.h b/xseg/xtypes/xlock.h index 54b6258..8b14302 100644 --- a/xseg/xtypes/xlock.h +++ b/xseg/xtypes/xlock.h @@ -26,8 +26,14 @@ static inline unsigned long xlock_acquire(struct xlock *lock, unsigned long who) return who; } +static inline unsigned long xlock_try_lock(struct xlock *lock, unsigned long who) +{ + return __sync_bool_compare_and_swap(&lock->owner, Noone, who); +} + static inline void xlock_release(struct xlock *lock) { + BARRIER(); lock->owner = Noone; }