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
28#define XNSYNCH_DREORD 0x4
29#define XNSYNCH_OWNER 0x8
30#define XNSYNCH_PP 0x10
33static inline int xnsynch_fast_is_claimed(xnhandle_t handle)
35 return (handle & XNSYNCH_FLCLAIM) != 0;
38static inline xnhandle_t xnsynch_fast_claimed(xnhandle_t handle)
40 return handle | XNSYNCH_FLCLAIM;
43static inline xnhandle_t xnsynch_fast_ceiling(xnhandle_t handle)
45 return handle | XNSYNCH_FLCEIL;
49xnsynch_fast_owner_check(
atomic_t *fastlock, xnhandle_t ownerh)
51 return (xnhandle_get_id((xnhandle_t)atomic_read(fastlock)) == ownerh) ?
56int xnsynch_fast_acquire(
atomic_t *fastlock, xnhandle_t new_ownerh)
60 h = (xnhandle_t)atomic_cmpxchg(fastlock, XN_NO_HANDLE, new_ownerh);
61 if (h != XN_NO_HANDLE) {
62 if (xnhandle_get_id(h) == new_ownerh)
72int xnsynch_fast_release(
atomic_t *fastlock, xnhandle_t cur_ownerh)
74 return (xnhandle_t)atomic_cmpxchg(fastlock, cur_ownerh, XN_NO_HANDLE)
79static 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