2 * linux/include/asm-arm/semaphore.h
4 #ifndef __ASM_ARM_SEMAPHORE_H
5 #define __ASM_ARM_SEMAPHORE_H
7 #include <linux/linkage.h>
8 #include <asm/atomic.h>
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>