xref: /linux-6.15/tools/include/linux/types.h (revision 16b1936a)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2d944c4eeSBorislav Petkov #ifndef _TOOLS_LINUX_TYPES_H_
3d944c4eeSBorislav Petkov #define _TOOLS_LINUX_TYPES_H_
4d944c4eeSBorislav Petkov 
5d944c4eeSBorislav Petkov #include <stdbool.h>
6d944c4eeSBorislav Petkov #include <stddef.h>
7d944c4eeSBorislav Petkov #include <stdint.h>
8d944c4eeSBorislav Petkov 
9190d1c92STiezhu Yang #ifndef __SANE_USERSPACE_TYPES__
10d944c4eeSBorislav Petkov #define __SANE_USERSPACE_TYPES__	/* For PPC64, to get LL64 types */
11190d1c92STiezhu Yang #endif
12190d1c92STiezhu Yang 
13d944c4eeSBorislav Petkov #include <asm/types.h>
1467ef2879SArnaldo Carvalho de Melo #include <asm/posix_types.h>
15d944c4eeSBorislav Petkov 
16d944c4eeSBorislav Petkov struct page;
17d944c4eeSBorislav Petkov struct kmem_cache;
18d944c4eeSBorislav Petkov 
19d944c4eeSBorislav Petkov typedef enum {
20d944c4eeSBorislav Petkov 	GFP_KERNEL,
21d944c4eeSBorislav Petkov 	GFP_ATOMIC,
22d944c4eeSBorislav Petkov 	__GFP_HIGHMEM,
23d944c4eeSBorislav Petkov 	__GFP_HIGH
24d944c4eeSBorislav Petkov } gfp_t;
25d944c4eeSBorislav Petkov 
26d944c4eeSBorislav Petkov /*
27d944c4eeSBorislav Petkov  * We define u64 as uint64_t for every architecture
28d944c4eeSBorislav Petkov  * so that we can print it with "%"PRIx64 without getting warnings.
29d944c4eeSBorislav Petkov  *
30d944c4eeSBorislav Petkov  * typedef __u64 u64;
31d944c4eeSBorislav Petkov  * typedef __s64 s64;
32d944c4eeSBorislav Petkov  */
33d944c4eeSBorislav Petkov typedef uint64_t u64;
34d944c4eeSBorislav Petkov typedef int64_t s64;
35d944c4eeSBorislav Petkov 
36d944c4eeSBorislav Petkov typedef __u32 u32;
37d944c4eeSBorislav Petkov typedef __s32 s32;
38d944c4eeSBorislav Petkov 
39d944c4eeSBorislav Petkov typedef __u16 u16;
40d944c4eeSBorislav Petkov typedef __s16 s16;
41d944c4eeSBorislav Petkov 
42d944c4eeSBorislav Petkov typedef __u8  u8;
43d944c4eeSBorislav Petkov typedef __s8  s8;
44d944c4eeSBorislav Petkov 
45*16b1936aSWei Yang typedef unsigned long long	ullong;
46*16b1936aSWei Yang 
47d944c4eeSBorislav Petkov #ifdef __CHECKER__
48c724c866SBjorn Helgaas #define __bitwise	__attribute__((bitwise))
49d944c4eeSBorislav Petkov #else
50c724c866SBjorn Helgaas #define __bitwise
51d944c4eeSBorislav Petkov #endif
52d944c4eeSBorislav Petkov 
53d944c4eeSBorislav Petkov #define __force
54e9c4962cSShunsuke Mie /* This is defined in linux/compiler_types.h and is left for backward
55e9c4962cSShunsuke Mie  * compatibility.
56e9c4962cSShunsuke Mie  */
57e9c4962cSShunsuke Mie #ifndef __user
58d944c4eeSBorislav Petkov #define __user
59e9c4962cSShunsuke Mie #endif
60d944c4eeSBorislav Petkov #define __must_check
61d944c4eeSBorislav Petkov #define __cold
62d944c4eeSBorislav Petkov 
63d944c4eeSBorislav Petkov typedef __u16 __bitwise __le16;
64d944c4eeSBorislav Petkov typedef __u16 __bitwise __be16;
65d944c4eeSBorislav Petkov typedef __u32 __bitwise __le32;
66d944c4eeSBorislav Petkov typedef __u32 __bitwise __be32;
67d944c4eeSBorislav Petkov typedef __u64 __bitwise __le64;
68d944c4eeSBorislav Petkov typedef __u64 __bitwise __be64;
69d944c4eeSBorislav Petkov 
702942a671SIan Rogers typedef __u16 __bitwise __sum16;
712942a671SIan Rogers typedef __u32 __bitwise __wsum;
722942a671SIan Rogers 
73884ee1e5SKarolina Drobnik #ifdef CONFIG_PHYS_ADDR_T_64BIT
74884ee1e5SKarolina Drobnik typedef u64 phys_addr_t;
75884ee1e5SKarolina Drobnik #else
76884ee1e5SKarolina Drobnik typedef u32 phys_addr_t;
77884ee1e5SKarolina Drobnik #endif
78884ee1e5SKarolina Drobnik 
79da6d8567SArnaldo Carvalho de Melo typedef struct {
80da6d8567SArnaldo Carvalho de Melo 	int counter;
81da6d8567SArnaldo Carvalho de Melo } atomic_t;
82da6d8567SArnaldo Carvalho de Melo 
839c07af20SKarolina Drobnik typedef struct {
849c07af20SKarolina Drobnik 	long counter;
859c07af20SKarolina Drobnik } atomic_long_t;
869c07af20SKarolina Drobnik 
8770ba6b8fSWang Nan #ifndef __aligned_u64
8870ba6b8fSWang Nan # define __aligned_u64 __u64 __attribute__((aligned(8)))
8970ba6b8fSWang Nan #endif
9070ba6b8fSWang Nan 
91d944c4eeSBorislav Petkov struct list_head {
92d944c4eeSBorislav Petkov 	struct list_head *next, *prev;
93d944c4eeSBorislav Petkov };
94d944c4eeSBorislav Petkov 
95d944c4eeSBorislav Petkov struct hlist_head {
96d944c4eeSBorislav Petkov 	struct hlist_node *first;
97d944c4eeSBorislav Petkov };
98d944c4eeSBorislav Petkov 
99d944c4eeSBorislav Petkov struct hlist_node {
100d944c4eeSBorislav Petkov 	struct hlist_node *next, **pprev;
101d944c4eeSBorislav Petkov };
102d944c4eeSBorislav Petkov 
103d944c4eeSBorislav Petkov #endif /* _TOOLS_LINUX_TYPES_H_ */
104