| 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 | #ifndef __aligned_be64 |
| 92 | # define __aligned_be64 __be64 __attribute__((aligned(8))) |
| 93 | #endif |
| 94 | |
| 95 | #ifndef __aligned_le64 |
| 96 | # define __aligned_le64 __le64 __attribute__((aligned(8))) |
| 97 | #endif |
| 98 | |
| 99 | struct list_head { |
| 100 | struct list_head *next, *prev; |
| 101 | }; |
| 102 | |
| 103 | struct hlist_head { |
| 104 | struct hlist_node *first; |
| 105 | }; |
| 106 | |
| 107 | struct hlist_node { |
| 108 | struct hlist_node *next, **pprev; |
| 109 | }; |
| 110 | |
| 111 | #endif /* _TOOLS_LINUX_TYPES_H_ */ |
| 112 | |