16#ifndef __L4UTIL_LOCK_H__
17#define __L4UTIL_LOCK_H__
19#include <l4/sys/thread.h>
27L4_INLINE int l4_simple_try_lock(l4util_simple_lock_t *lock);
28L4_INLINE void l4_simple_unlock(l4util_simple_lock_t *lock);
29L4_INLINE int l4_simple_lock_locked(l4util_simple_lock_t *lock);
30L4_INLINE void l4_simple_lock_solid(
register l4util_simple_lock_t *p);
31L4_INLINE void l4_simple_lock(l4util_simple_lock_t * lock);
34l4_simple_try_lock(l4util_simple_lock_t *lock)
40l4_simple_unlock(l4util_simple_lock_t *lock)
46l4_simple_lock_locked(l4util_simple_lock_t *lock)
48 return (*lock == 0) ? 0 : 1;
52l4_simple_lock_solid(
register l4util_simple_lock_t *p)
54 while (l4_simple_lock_locked(p) || !l4_simple_try_lock(p))
59l4_simple_lock(l4util_simple_lock_t * lock)
61 if (!l4_simple_try_lock(lock))
62 l4_simple_lock_solid(lock);
L4 compiler related defines.
unsigned int l4_uint32_t
Unsigned 32bit value.
@ L4_INVALID_CAP
Invalid capability selector.
l4_msgtag_t l4_thread_switch(l4_cap_idx_t to_thread) L4_NOTHROW
Switch to another thread (and donate the remaining time slice).
#define __END_DECLS
End section with C types and functions.
#define L4_INLINE
L4 Inline function attribute.
#define __BEGIN_DECLS
Start section with C types and functions.
l4_uint32_t l4util_xchg32(volatile l4_uint32_t *dest, l4_uint32_t val)
Atomic exchange (32 bit version)
atomic operations header and generic implementations