Commit | Line | Data |
---|---|---|
fb1c8f93 IM |
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 | ||
500c2e1f DD |
8 | #include <linux/types.h> |
9 | ||
10 | #include <asm/byteorder.h> | |
11 | ||
12 | typedef union { | |
2a31b033 | 13 | /* |
70342287 | 14 | * bits 0..15 : serving_now |
500c2e1f | 15 | * bits 16..31 : ticket |
2a31b033 | 16 | */ |
500c2e1f DD |
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; | |
445c8951 | 27 | } arch_spinlock_t; |
fb1c8f93 | 28 | |
500c2e1f | 29 | #define __ARCH_SPIN_LOCK_UNLOCKED { .lock = 0 } |
fb1c8f93 IM |
30 | |
31 | typedef struct { | |
32 | volatile unsigned int lock; | |
fb3a6bbc | 33 | } arch_rwlock_t; |
fb1c8f93 | 34 | |
fb3a6bbc | 35 | #define __ARCH_RW_LOCK_UNLOCKED { 0 } |
fb1c8f93 IM |
36 | |
37 | #endif |