39 char name[XNOBJECT_NAME_LEN];
46 typedef struct rt_mutex_placeholder {
50 #ifdef CONFIG_XENO_FASTSYNCH
51 xnarch_atomic_t *fastlock;
56 } RT_MUTEX_PLACEHOLDER;
58 #if (defined(__KERNEL__) || defined(__XENO_SIM__)) && !defined(DOXYGEN_CPP)
60 #include <nucleus/synch.h>
63 #define XENO_MUTEX_MAGIC 0x55550505
65 #define RT_MUTEX_EXPORTED XNSYNCH_SPARE0
67 typedef struct __rt_mutex {
77 char name[XNOBJECT_NAME_LEN];
79 #ifdef CONFIG_XENO_OPT_PERVASIVE
85 #define rlink2mutex(ln) container_of(ln, RT_MUTEX, rlink)
95 #ifdef CONFIG_XENO_OPT_NATIVE_MUTEX
97 int __native_mutex_pkg_init(
void);
99 void __native_mutex_pkg_cleanup(
void);
101 static inline void __native_mutex_flush_rq(xnqueue_t *rq)
103 xeno_flush_rq(RT_MUTEX, rq, mutex);
106 int rt_mutex_acquire_inner(RT_MUTEX *mutex, RTIME timeout,
107 xntmode_t timeout_mode);
111 #define __native_mutex_pkg_init() ({ 0; })
112 #define __native_mutex_pkg_cleanup() do { } while(0)
113 #define __native_mutex_flush_rq(rq) do { } while(0)
123 typedef RT_MUTEX_PLACEHOLDER RT_MUTEX;
136 mutex->opaque = XN_NO_HANDLE;
150 int rt_mutex_create_inner(RT_MUTEX *mutex,
const char *name,
int global);