Something went wrong. Try again.
(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Something went wrong. Try again.
C
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293/* SPDX-License-Identifier: GPL-2.0 */#ifndef _LINUX_TYPES_H#define _LINUX_TYPES_H
#include <uapi/linux/types.h>
#ifndef __ASSEMBLY__
#define DECLARE_BITMAP(name,bits) \ unsigned long name[BITS_TO_LONGS(bits)]
#ifdef __SIZEOF_INT128__typedef __s128 s128;typedef __u128 u128;#endif
typedef u32 __kernel_dev_t;
typedef __kernel_fd_set fd_set;typedef __kernel_dev_t dev_t;typedef __kernel_ulong_t ino_t;typedef __kernel_mode_t mode_t;typedef unsigned short umode_t;typedef u32 nlink_t;typedef __kernel_off_t off_t;typedef __kernel_pid_t pid_t;typedef __kernel_daddr_t daddr_t;typedef __kernel_key_t key_t;typedef __kernel_suseconds_t suseconds_t;typedef __kernel_timer_t timer_t;typedef __kernel_clockid_t clockid_t;typedef __kernel_mqd_t mqd_t;
typedef _Bool bool;
typedef __kernel_uid32_t uid_t;typedef __kernel_gid32_t gid_t;typedef __kernel_uid16_t uid16_t;typedef __kernel_gid16_t gid16_t;
typedef unsigned long uintptr_t;typedef long intptr_t;
#ifdef CONFIG_HAVE_UID16/* This is defined by arch/{arch}/include/asm/posix_types.h */typedef __kernel_old_uid_t old_uid_t;typedef __kernel_old_gid_t old_gid_t;#endif /* CONFIG_UID16 */
#if defined(__GNUC__)typedef __kernel_loff_t loff_t;typedef __kernel_uoff_t uoff_t;#endif
/* * The following typedefs are also protected by individual ifdefs for * historical reasons: */#ifndef _SIZE_T#define _SIZE_Ttypedef __kernel_size_t size_t;#endif
#ifndef _SSIZE_T#define _SSIZE_Ttypedef __kernel_ssize_t ssize_t;#endif
#ifndef _PTRDIFF_T#define _PTRDIFF_Ttypedef __kernel_ptrdiff_t ptrdiff_t;#endif
#ifndef _CLOCK_T#define _CLOCK_Ttypedef __kernel_clock_t clock_t;#endif
#ifndef _CADDR_T#define _CADDR_Ttypedef __kernel_caddr_t caddr_t;#endif
/* bsd */typedef unsigned char u_char;typedef unsigned short u_short;typedef unsigned int u_int;typedef unsigned long u_long;
/* sysv */typedef unsigned char unchar;typedef unsigned short ushort;typedef unsigned int uint;typedef unsigned long ulong;typedef unsigned long long ullong;
#ifndef __BIT_TYPES_DEFINED__#define __BIT_TYPES_DEFINED__
typedef u8 u_int8_t;typedef s8 int8_t;typedef u16 u_int16_t;typedef s16 int16_t;typedef u32 u_int32_t;typedef s32 int32_t;
#endif /* !(__BIT_TYPES_DEFINED__) */
typedef u8 uint8_t;typedef u16 uint16_t;typedef u32 uint32_t;
#if defined(__GNUC__)typedef u64 uint64_t;typedef u64 u_int64_t;typedef s64 int64_t;#endif
/* These are the special 64-bit data types that are 8-byte aligned */#define aligned_u64 __aligned_u64#define aligned_s64 __aligned_s64#define aligned_be64 __aligned_be64#define aligned_le64 __aligned_le64
/* Nanosecond scalar representation for kernel time values */typedef s64 ktime_t;
/** * The type used for indexing onto a disc or disc partition. * * Linux always considers sectors to be 512 bytes long independently * of the devices real block size. * * blkcnt_t is the type of the inode's block count. */typedef u64 sector_t;typedef u64 blkcnt_t;
/* generic data direction definitions */#define READ 0#define WRITE 1
/* * The type of an index into the pagecache. */#define pgoff_t unsigned long
/* * A dma_addr_t can hold any valid DMA address, i.e., any address returned * by the DMA API. * * If the DMA API only uses 32-bit addresses, dma_addr_t need only be 32 * bits wide. Bus addresses, e.g., PCI BARs, may be wider than 32 bits, * but drivers do memory-mapped I/O to ioremapped kernel virtual addresses, * so they don't care about the size of the actual bus addresses. */#ifdef CONFIG_ARCH_DMA_ADDR_T_64BITtypedef u64 dma_addr_t;#elsetypedef u32 dma_addr_t;#endif
typedef unsigned int __bitwise gfp_t;typedef unsigned int __bitwise slab_flags_t;typedef unsigned int __bitwise fmode_t;typedef unsigned int __bitwise blk_mode_t;typedef unsigned int __bitwise fop_flags_t;
#ifdef CONFIG_PHYS_ADDR_T_64BITtypedef u64 phys_addr_t;#elsetypedef u32 phys_addr_t;#endif
struct phys_vec { phys_addr_t paddr; size_t len;};
typedef phys_addr_t resource_size_t;
/* * This type is the placeholder for a hardware interrupt number. It has to be * big enough to enclose whatever representation is used by a given platform. */typedef unsigned long irq_hw_number_t;
typedef struct { int __aligned(sizeof(int)) counter;} atomic_t;
#define ATOMIC_INIT(i) { (i) }
#ifdef CONFIG_64BITtypedef struct { s64 counter;} atomic64_t;#endif
typedef struct { atomic_t refcnt;} rcuref_t;
#define RCUREF_INIT(i) { .refcnt = ATOMIC_INIT(i - 1) }
struct list_head { struct list_head *next, *prev;};
struct hlist_head { struct hlist_node *first;};
struct hlist_node { struct hlist_node *next, **pprev;};
struct ustat { __kernel_daddr_t f_tfree;#ifdef CONFIG_ARCH_32BIT_USTAT_F_TINODE unsigned int f_tinode;#else unsigned long f_tinode;#endif char f_fname[6]; char f_fpack[6];};
struct kcov_common_handle_id {#ifdef CONFIG_KCOV u64 val;#endif};
/** * struct callback_head - callback structure for use with RCU and task_work * @next: next update requests in a list * @func: actual update function to call after the grace period. * * The struct is aligned to size of pointer. On most architectures it happens * naturally due ABI requirements, but some architectures (like CRIS) have * weird ABI and we need to ask it explicitly. * * The alignment is required to guarantee that bit 0 of @next will be * clear under normal conditions -- as long as we use call_rcu() or * call_srcu() to queue the callback. * * This guarantee is important for few reasons: * - future call_rcu_lazy() will make use of lower bits in the pointer; * - the structure shares storage space in struct page with @compound_info, * which encode PageTail() in bit 0. The guarantee is needed to avoid * false-positive PageTail(). */struct callback_head { struct callback_head *next; void (*func)(struct callback_head *head);} __attribute__((aligned(sizeof(void *))));#define rcu_head callback_head
#ifdef CONFIG_KVFREE_RCU_BATCHEDstruct kvfree_rcu_head { struct kvfree_rcu_head *next;};#elsestruct kvfree_rcu_head { struct rcu_head head;};#endif
typedef void (*rcu_callback_t)(struct rcu_head *head);typedef void (*call_rcu_func_t)(struct rcu_head *head, rcu_callback_t func);
typedef void (*swap_r_func_t)(void *a, void *b, int size, const void *priv);typedef void (*swap_func_t)(void *a, void *b, int size);
typedef int (*cmp_r_func_t)(const void *a, const void *b, const void *priv);typedef int (*cmp_func_t)(const void *a, const void *b);
/* * rcuwait provides a way of blocking and waking up a single * task in an rcu-safe manner. * * The only time @task is non-nil is when a user is blocked (or * checking if it needs to) on a condition, and reset as soon as we * know that the condition has succeeded and are awoken. */struct rcuwait { struct task_struct __rcu *task;};
#endif /* __ASSEMBLY__ */#endif /* _LINUX_TYPES_H */