xref: /minix3/minix/include/ddekit/lock.h (revision 433d6423c39e34ec4b79c950597bb2d236f886be)
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