1 #ifndef _TOOLS_LINUX_TYPES_H_ 2 #define _TOOLS_LINUX_TYPES_H_ 3 4 #include <stdbool.h> 5 #include <stddef.h> 6 #include <stdint.h> 7 8 #define __SANE_USERSPACE_TYPES__ /* For PPC64, to get LL64 types */ 9 #include <asm/types.h> 10 11 struct page; 12 struct kmem_cache; 13 14 typedef enum { 15 GFP_KERNEL, 16 GFP_ATOMIC, 17 __GFP_HIGHMEM, 18 __GFP_HIGH 19 } gfp_t; 20 21 /* 22 * We define u64 as uint64_t for every architecture 23 * so that we can print it with "%"PRIx64 without getting warnings. 24 * 25 * typedef __u64 u64; 26 * typedef __s64 s64; 27 */ 28 typedef uint64_t u64; 29 typedef int64_t s64; 30 31 typedef __u32 u32; 32 typedef __s32 s32; 33 34 typedef __u16 u16; 35 typedef __s16 s16; 36 37 typedef __u8 u8; 38 typedef __s8 s8; 39 40 #ifdef __CHECKER__ 41 #define __bitwise__ __attribute__((bitwise)) 42 #else 43 #define __bitwise__ 44 #endif 45 #define __bitwise __bitwise__ 46 47 #define __force 48 #define __user 49 #define __must_check 50 #define __cold 51 52 typedef __u16 __bitwise __le16; 53 typedef __u16 __bitwise __be16; 54 typedef __u32 __bitwise __le32; 55 typedef __u32 __bitwise __be32; 56 typedef __u64 __bitwise __le64; 57 typedef __u64 __bitwise __be64; 58 59 typedef struct { 60 int counter; 61 } atomic_t; 62 63 #ifndef __aligned_u64 64 # define __aligned_u64 __u64 __attribute__((aligned(8))) 65 #endif 66 67 struct list_head { 68 struct list_head *next, *prev; 69 }; 70 71 struct hlist_head { 72 struct hlist_node *first; 73 }; 74 75 struct hlist_node { 76 struct hlist_node *next, **pprev; 77 }; 78 79 #endif /* _TOOLS_LINUX_TYPES_H_ */ 80