1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _TOOLS_LINUX_TYPES_H_
3 #define _TOOLS_LINUX_TYPES_H_
4 
5 #include <stdbool.h>
6 #include <stddef.h>
7 #include <stdint.h>
8 
9 #ifndef __SANE_USERSPACE_TYPES__
10 #define __SANE_USERSPACE_TYPES__	/* For PPC64, to get LL64 types */
11 #endif
12 
13 #include <asm/types.h>
14 #include <asm/posix_types.h>
15 
16 struct page;
17 struct kmem_cache;
18 
19 typedef enum {
20 	GFP_KERNEL,
21 	GFP_ATOMIC,
22 	__GFP_HIGHMEM,
23 	__GFP_HIGH
24 } gfp_t;
25 
26 /*
27  * We define u64 as uint64_t for every architecture
28  * so that we can print it with "%"PRIx64 without getting warnings.
29  *
30  * typedef __u64 u64;
31  * typedef __s64 s64;
32  */
33 typedef uint64_t u64;
34 typedef int64_t s64;
35 
36 typedef __u32 u32;
37 typedef __s32 s32;
38 
39 typedef __u16 u16;
40 typedef __s16 s16;
41 
42 typedef __u8  u8;
43 typedef __s8  s8;
44 
45 typedef unsigned long long	ullong;
46 
47 #ifdef __CHECKER__
48 #define __bitwise	__attribute__((bitwise))
49 #else
50 #define __bitwise
51 #endif
52 
53 #define __force
54 /* This is defined in linux/compiler_types.h and is left for backward
55  * compatibility.
56  */
57 #ifndef __user
58 #define __user
59 #endif
60 #define __must_check
61 #define __cold
62 
63 typedef __u16 __bitwise __le16;
64 typedef __u16 __bitwise __be16;
65 typedef __u32 __bitwise __le32;
66 typedef __u32 __bitwise __be32;
67 typedef __u64 __bitwise __le64;
68 typedef __u64 __bitwise __be64;
69 
70 typedef __u16 __bitwise __sum16;
71 typedef __u32 __bitwise __wsum;
72 
73 #ifdef CONFIG_PHYS_ADDR_T_64BIT
74 typedef u64 phys_addr_t;
75 #else
76 typedef u32 phys_addr_t;
77 #endif
78 
79 typedef struct {
80 	int counter;
81 } atomic_t;
82 
83 typedef struct {
84 	long counter;
85 } atomic_long_t;
86 
87 #ifndef __aligned_u64
88 # define __aligned_u64 __u64 __attribute__((aligned(8)))
89 #endif
90 
91 struct list_head {
92 	struct list_head *next, *prev;
93 };
94 
95 struct hlist_head {
96 	struct hlist_node *first;
97 };
98 
99 struct hlist_node {
100 	struct hlist_node *next, **pprev;
101 };
102 
103 #endif /* _TOOLS_LINUX_TYPES_H_ */
104