123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- #pragma once
- #include <efidef.h>
- #include "compiler_attributes.h"
- #include "linux/posix_types.h"
- #include "linux/bitsperlong.h"
- // Simplified version of Linux types.h
- #define typeof(p) __typeof__(p)
- /*
- * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
- * header files exported to user space
- */
- #ifndef __ASSEMBLY__
- /*
- * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
- * header files exported to user space
- */
- typedef __signed__ char __s8;
- typedef unsigned char __u8;
- typedef __signed__ short __s16;
- typedef unsigned short __u16;
- typedef __signed__ int __s32;
- typedef unsigned int __u32;
- #ifdef __GNUC__
- __extension__ typedef __signed__ long long __s64;
- __extension__ typedef unsigned long long __u64;
- #else
- typedef __signed__ long long __s64;
- typedef unsigned long long __u64;
- #endif
- #endif /* __ASSEMBLY__ */
- typedef __s8 s8;
- typedef __u8 u8;
- typedef __s16 s16;
- typedef __u16 u16;
- typedef __s32 s32;
- typedef __u32 u32;
- typedef __s64 s64;
- typedef __u64 u64;
- typedef unsigned long efi_status_t;
- typedef u8 efi_bool_t;
- typedef u16 efi_char16_t; /* UNICODE character */
- typedef u64 efi_physical_addr_t;
- typedef void *efi_handle_t;
- typedef u64 phys_addr_t;
- typedef _Bool bool;
- enum { false = 0, true = 1 };
- /*
- * Below are truly Linux-specific types that should never collide with
- * any application/library that wants linux/types.h.
- */
- #ifdef __CHECKER__
- #define __bitwise__ __attribute__((bitwise))
- #else
- #define __bitwise__
- #endif
- #define __bitwise __bitwise__
- typedef __u16 __bitwise __le16;
- typedef __u16 __bitwise __be16;
- typedef __u32 __bitwise __le32;
- typedef __u32 __bitwise __be32;
- typedef __u64 __bitwise __le64;
- typedef __u64 __bitwise __be64;
- typedef __u16 __bitwise __sum16;
- typedef __u32 __bitwise __wsum;
- /*
- * aligned_u64 should be used in defining kernel<->userspace ABIs to avoid
- * common 32/64-bit compat problems.
- * 64-bit values align to 4-byte boundaries on x86_32 (and possibly other
- * architectures) and to 8-byte boundaries on 64-bit architectures. The new
- * aligned_64 type enforces 8-byte alignment so that structs containing
- * aligned_64 values have the same alignment on 32-bit and 64-bit architectures.
- * No conversions are necessary between 32-bit user-space and a 64-bit kernel.
- */
- #define __aligned_u64 __u64 __attribute__((aligned(8)))
- #define __aligned_be64 __be64 __attribute__((aligned(8)))
- #define __aligned_le64 __le64 __attribute__((aligned(8)))
- /*
- * The following typedefs are also protected by individual ifdefs for
- * historical reasons:
- */
- #ifndef _SIZE_T
- #define _SIZE_T
- typedef __kernel_size_t size_t;
- #endif
- #ifndef _SSIZE_T
- #define _SSIZE_T
- typedef __kernel_ssize_t ssize_t;
- #endif
- #ifndef _PTRDIFF_T
- #define _PTRDIFF_T
- typedef __kernel_ptrdiff_t ptrdiff_t;
- #endif
- #ifndef _CLOCK_T
- #define _CLOCK_T
- typedef __kernel_clock_t clock_t;
- #endif
- #ifndef _CADDR_T
- #define _CADDR_T
- typedef __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 __bitwise __poll_t;
|