19 #ifndef _COBALT_UAPI_KERNEL_SYNCH_H 20 #define _COBALT_UAPI_KERNEL_SYNCH_H 22 #include <cobalt/uapi/kernel/types.h> 25 #define XNSYNCH_FIFO 0x0 26 #define XNSYNCH_PRIO 0x1 27 #define XNSYNCH_PI 0x2 28 #define XNSYNCH_DREORD 0x4 29 #define XNSYNCH_OWNER 0x8 30 #define XNSYNCH_PP 0x10 33 static inline int xnsynch_fast_is_claimed(xnhandle_t handle)
35 return (handle & XNSYNCH_FLCLAIM) != 0;
38 static inline xnhandle_t xnsynch_fast_claimed(xnhandle_t handle)
40 return handle | XNSYNCH_FLCLAIM;
43 static inline xnhandle_t xnsynch_fast_ceiling(xnhandle_t handle)
45 return handle | XNSYNCH_FLCEIL;
49 xnsynch_fast_owner_check(
atomic_t *fastlock, xnhandle_t ownerh)
51 return (xnhandle_get_id(atomic_read(fastlock)) == ownerh) ?
56 int xnsynch_fast_acquire(
atomic_t *fastlock, xnhandle_t new_ownerh)
60 h = atomic_cmpxchg(fastlock, XN_NO_HANDLE, new_ownerh);
61 if (h != XN_NO_HANDLE) {
62 if (xnhandle_get_id(h) == new_ownerh)
72 int xnsynch_fast_release(
atomic_t *fastlock, xnhandle_t cur_ownerh)
74 return atomic_cmpxchg(fastlock, cur_ownerh, XN_NO_HANDLE)
79 static inline int xnsynch_is_shared(xnhandle_t handle)
81 return (handle & XNSYNCH_PSHARED) != 0;
Copyright © 2011 Gilles Chanteperdrix gilles.chanteperdrix@xenomai.org.
Definition: atomic.h:24