/* * User space locking * * Copyright (C) 2009 Bahadir Bilgehan Balban */ #ifndef __L4_MUTEX_H__ #define __L4_MUTEX_H__ #if !defined(__ASSEMBLY__) #include struct l4_mutex { unsigned int lock; } __attribute__((aligned(sizeof(int)))); void l4_mutex_init(struct l4_mutex *m); int l4_mutex_lock(struct l4_mutex *m); int l4_mutex_unlock(struct l4_mutex *m); #endif /* Mutex return value - don't mix up with mutes state */ #define L4_MUTEX_CONTENDED -1 #define L4_MUTEX_SUCCESS 0 /* Mutex states - Any valid tid value is a locked state */ #define L4_MUTEX_UNLOCKED -1 #define L4_MUTEX(m) \ struct l4_mutex m = { L4_MUTEX_UNLOCKED } #endif /* __L4_MUTEX_H__ */