Use a chunk of the key flags to record the item type.
[platform/upstream/btrfs-progs.git] / kerncompat.h
1 #ifndef __KERNCOMPAT
2 #define __KERNCOMPAT
3 #define gfp_t int
4 #define get_cpu_var(p) (p)
5 #define __get_cpu_var(p) (p)
6 #define BITS_PER_LONG 64
7 #define __GFP_BITS_SHIFT 20
8 #define __GFP_BITS_MASK ((int)((1 << __GFP_BITS_SHIFT) - 1))
9 #define GFP_KERNEL 0
10 #define __read_mostly
11 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
12 #define PAGE_SHIFT 12
13 #define ULONG_MAX       (~0UL)
14 #define BUG() abort()
15 #ifdef __CHECKER__
16 #define __force    __attribute__((force))
17 #define __bitwise__ __attribute__((bitwise))
18 #else
19 #define __force
20 #define __bitwise__
21 #endif
22
23 typedef unsigned int u32;
24 typedef u32 __u32;
25 typedef unsigned long long u64;
26 typedef unsigned char u8;
27 typedef unsigned short u16;
28
29 typedef unsigned long pgoff_t;
30
31 #include <stdio.h>
32 #include <stdlib.h>
33 #include <string.h>
34
35 struct vma_shared { int prio_tree_node; };
36 struct vm_area_struct {
37         unsigned long vm_pgoff;
38         unsigned long vm_start;
39         unsigned long vm_end;
40         struct vma_shared shared;
41 };
42
43 struct page {
44         unsigned long index;
45 };
46
47 static inline void preempt_enable(void) { do {; } while(0);}
48 static inline void preempt_disable(void) { do {; } while(0);}
49
50 static inline void __set_bit(int bit, unsigned long *map) {
51         unsigned long *p = map + bit / BITS_PER_LONG;
52         bit = bit & (BITS_PER_LONG -1);
53         *p |= 1UL << bit;
54 }
55
56 static inline int test_bit(int bit, unsigned long *map) {
57         unsigned long *p = map + bit / BITS_PER_LONG;
58         bit = bit & (BITS_PER_LONG -1);
59         return *p & (1UL << bit) ? 1 : 0;
60 }
61
62 static inline void __clear_bit(int bit, unsigned long *map) {
63         unsigned long *p = map + bit / BITS_PER_LONG;
64         bit = bit & (BITS_PER_LONG -1);
65         *p &= ~(1UL << bit);
66 }
67 #define BUG_ON(c) do { if (c) abort(); } while (0)
68
69 #define container_of(ptr, type, member) ({                      \
70         const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
71                 (type *)( (char *)__mptr - __builtin_offsetof(type,member) );})
72
73 #define ENOMEM 5
74 #define EEXIST 6
75
76 #define __CHECK_ENDIAN__
77 #ifdef __CHECK_ENDIAN__
78 #define __bitwise __bitwise__
79 #else
80 #define __bitwise
81 #endif
82
83 typedef u16 __bitwise __le16;
84 typedef u16 __bitwise __be16;
85 typedef u32 __bitwise __le32;
86 typedef u32 __bitwise __be32;
87 typedef u64 __bitwise __le64;
88 typedef u64 __bitwise __be64;
89
90 #define cpu_to_le64(x) ((__force __le64)(u64)(x))
91 #define le64_to_cpu(x) ((__force u64)(__le64)(x))
92 #define cpu_to_le32(x) ((__force __le32)(u32)(x))
93 #define le32_to_cpu(x) ((__force u32)(__le32)(x))
94 #define cpu_to_le16(x) ((__force __le16)(u16)(x))
95 #define le16_to_cpu(x) ((__force u16)(__le16)(x))
96 #endif