Import 2.3.6
[davej-history.git] / include / asm-arm / semaphore.h
blob05456d7dee8100bf740d1fdd06eabc026cf07da8
1 /*
2 * linux/include/asm-arm/semaphore.h
3 */
4 #ifndef __ASM_ARM_SEMAPHORE_H
5 #define __ASM_ARM_SEMAPHORE_H
7 #include <linux/linkage.h>
8 #include <asm/atomic.h>
10 struct semaphore {
11 atomic_t count;
12 int waking;
13 wait_queue_head_t wait;
16 #define MUTEX ((struct semaphore) { ATOMIC_INIT(1), 0, NULL })
17 #define MUTEX_LOCKED ((struct semaphore) { ATOMIC_INIT(0), 0, NULL })
19 asmlinkage void __down_failed (void /* special register calling convention */);
20 asmlinkage int __down_interruptible_failed (void /* special register calling convention */);
21 asmlinkage int __down_failed_trylock(void /* params in registers */);
22 asmlinkage void __up_wakeup (void /* special register calling convention */);
24 extern void __down(struct semaphore * sem);
25 extern int __down_interruptible(struct semaphore * sem);
26 extern int __down_trylock(struct semaphore * sem);
27 extern void __up(struct semaphore * sem);
29 #define sema_init(sem, val) atomic_set(&((sem)->count), (val))
31 #include <asm/proc/semaphore.h>
33 #endif