1951a39d68df598db08dfced8b4707755864a0492Ying Wang/**************************************************************************** 2951a39d68df598db08dfced8b4707755864a0492Ying Wang **************************************************************************** 3951a39d68df598db08dfced8b4707755864a0492Ying Wang *** 4951a39d68df598db08dfced8b4707755864a0492Ying Wang *** This header was automatically generated from a Linux kernel header 5951a39d68df598db08dfced8b4707755864a0492Ying Wang *** of the same name, to make information necessary for userspace to 6951a39d68df598db08dfced8b4707755864a0492Ying Wang *** call into the kernel available to libc. It contains only constants, 7951a39d68df598db08dfced8b4707755864a0492Ying Wang *** structures, and macros generated from the original header, and thus, 8951a39d68df598db08dfced8b4707755864a0492Ying Wang *** contains no copyrightable information. 9951a39d68df598db08dfced8b4707755864a0492Ying Wang *** 10951a39d68df598db08dfced8b4707755864a0492Ying Wang **************************************************************************** 11951a39d68df598db08dfced8b4707755864a0492Ying Wang ****************************************************************************/ 12951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef __ASM_ARM_SEMAPHORE_H 13951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __ASM_ARM_SEMAPHORE_H 14951a39d68df598db08dfced8b4707755864a0492Ying Wang 15951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/linkage.h> 16951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/spinlock.h> 17951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/wait.h> 18951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/rwsem.h> 19951a39d68df598db08dfced8b4707755864a0492Ying Wang 20951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <asm/atomic.h> 21951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <asm/locks.h> 22951a39d68df598db08dfced8b4707755864a0492Ying Wang 23951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct semaphore { 24951a39d68df598db08dfced8b4707755864a0492Ying Wang atomic_t count; 25951a39d68df598db08dfced8b4707755864a0492Ying Wang int sleepers; 26951a39d68df598db08dfced8b4707755864a0492Ying Wang wait_queue_head_t wait; 27951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 28951a39d68df598db08dfced8b4707755864a0492Ying Wang 29951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __SEMAPHORE_INIT(name, cnt) { .count = ATOMIC_INIT(cnt), .wait = __WAIT_QUEUE_HEAD_INITIALIZER((name).wait), } 30951a39d68df598db08dfced8b4707755864a0492Ying Wang 31951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __DECLARE_SEMAPHORE_GENERIC(name,count) struct semaphore name = __SEMAPHORE_INIT(name,count) 32951a39d68df598db08dfced8b4707755864a0492Ying Wang 33951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1) 34951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0) 35951a39d68df598db08dfced8b4707755864a0492Ying Wang 36951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif 37