1#ifndef _ASM_SPINLOCK_TYPES_H 2#define _ASM_SPINLOCK_TYPES_H 3 4#ifndef __LINUX_SPINLOCK_TYPES_H 5# error "please don't include this file directly" 6#endif 7 8#include <linux/types.h> 9 10#include <asm/byteorder.h> 11 12typedef union { 13 /* 14 * bits 0..15 : serving_now 15 * bits 16..31 : ticket 16 */ 17 u32 lock; 18 struct { 19#ifdef __BIG_ENDIAN 20 u16 ticket; 21 u16 serving_now; 22#else 23 u16 serving_now; 24 u16 ticket; 25#endif 26 } h; 27} arch_spinlock_t; 28 29#define __ARCH_SPIN_LOCK_UNLOCKED { .lock = 0 } 30 31typedef struct { 32 volatile unsigned int lock; 33} arch_rwlock_t; 34 35#define __ARCH_RW_LOCK_UNLOCKED { 0 } 36 37#endif 38