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