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