1*433d6423SLionel Sambuc #ifndef _DDEKIT_LOCK_H 2*433d6423SLionel Sambuc #define _DDEKIT_LOCK_H 3*433d6423SLionel Sambuc 4*433d6423SLionel Sambuc #include <ddekit/ddekit.h> 5*433d6423SLionel Sambuc 6*433d6423SLionel Sambuc struct ddekit_lock; 7*433d6423SLionel Sambuc typedef struct ddekit_lock *ddekit_lock_t; 8*433d6423SLionel Sambuc 9*433d6423SLionel Sambuc /* Initialize a DDEKit unlocked lock. */ 10*433d6423SLionel Sambuc #define ddekit_lock_init ddekit_lock_init_unlocked 11*433d6423SLionel Sambuc 12*433d6423SLionel Sambuc /* Initialize a DDEKit unlocked lock. */ 13*433d6423SLionel Sambuc void ddekit_lock_init_unlocked(ddekit_lock_t *mtx); 14*433d6423SLionel Sambuc 15*433d6423SLionel Sambuc /* Initialize a DDEKit locked lock. */ 16*433d6423SLionel Sambuc void ddekit_lock_init_locked(ddekit_lock_t *mtx); 17*433d6423SLionel Sambuc 18*433d6423SLionel Sambuc /* Uninitialize a DDEKit lock. */ 19*433d6423SLionel Sambuc void ddekit_lock_deinit(ddekit_lock_t *mtx); 20*433d6423SLionel Sambuc 21*433d6423SLionel Sambuc /* Acquire a lock. */ 22*433d6423SLionel Sambuc void ddekit_lock_lock(ddekit_lock_t *mtx); 23*433d6423SLionel Sambuc 24*433d6423SLionel Sambuc /* Acquire a lock, non-blocking. */ 25*433d6423SLionel Sambuc int ddekit_lock_try_lock(ddekit_lock_t *mtx); 26*433d6423SLionel Sambuc 27*433d6423SLionel Sambuc /* Unlock function. */ 28*433d6423SLionel Sambuc void ddekit_lock_unlock(ddekit_lock_t *mtx); 29*433d6423SLionel Sambuc 30*433d6423SLionel Sambuc /* Get lock owner. */ 31*433d6423SLionel Sambuc int ddekit_lock_owner(ddekit_lock_t *mtx); 32*433d6423SLionel Sambuc 33*433d6423SLionel Sambuc #endif 34