| 1 | // SPDX-License-Identifier: GPL-3.0-or-later |
| 2 | |
| 3 | #pragma once |
| 4 | |
| 5 | #include <mos/mos_global.h> |
| 6 | #include <stdbool.h> |
| 7 | #include <stddef.h> |
| 8 | |
| 9 | typedef signed char s8; |
| 10 | typedef signed short s16; |
| 11 | typedef signed int s32; |
| 12 | typedef signed long slong; |
| 13 | typedef signed long long int s64; |
| 14 | |
| 15 | typedef unsigned char u8; |
| 16 | typedef unsigned short u16; |
| 17 | typedef unsigned int u32; |
| 18 | typedef unsigned long ulong; |
| 19 | typedef unsigned long long u64; |
| 20 | |
| 21 | typedef unsigned long ptr_t; |
| 22 | typedef unsigned int ptr32_t; |
| 23 | typedef unsigned long long ptr64_t; |
| 24 | |
| 25 | typedef signed long intn; |
| 26 | typedef unsigned long uintn; |
| 27 | |
| 28 | // native integer type |
| 29 | #define PTR_FMT "0x%16.16lx" |
| 30 | #define PTR_VLFMT "0x%lx" |
| 31 | |
| 32 | #define PTR_RANGE "[" PTR_FMT " - " PTR_FMT "]" |
| 33 | #define PTR_VLRANGE "[" PTR_VLFMT " - " PTR_VLFMT "]" |
| 34 | #define PTR_RANGE64 "[0x%.16llx - 0x%.16llx]" |
| 35 | |
| 36 | // physical frame number |
| 37 | typedef unsigned long long pfn_t; |
| 38 | #define PFN_FMT "%llu" |
| 39 | #define PFN_RANGE "[" PFN_FMT " - " PFN_FMT "]" |
| 40 | #define PFNADDR_RANGE "[" PTR_FMT " - " PTR_FMT "] (PFN " PFN_FMT " - " PFN_FMT ")" |
| 41 | |
| 42 | #define PFNADDR(pfn, end) (((ptr_t) (pfn)) * MOS_PAGE_SIZE), ((((ptr_t) end) * MOS_PAGE_SIZE) - 1), (pfn), (end) |
| 43 | |
| 44 | MOS_STATIC_ASSERT(sizeof(void *) == 8, "pointer size check failed" ); |
| 45 | MOS_STATIC_ASSERT(sizeof(ptr_t) == sizeof(void *), "ptr_t is not the same size as void *" ); |
| 46 | |
| 47 | typedef uintn reg_t; // native register type |
| 48 | typedef u16 reg16_t; // 16-bit |
| 49 | typedef u32 reg32_t; // 32-bit |
| 50 | typedef u64 reg64_t; // 64-bit |
| 51 | |
| 52 | typedef union |
| 53 | { |
| 54 | struct |
| 55 | { |
| 56 | bool b0 : 1; |
| 57 | bool b1 : 1; |
| 58 | bool b2 : 1; |
| 59 | bool b3 : 1; |
| 60 | bool b4 : 1; |
| 61 | bool b5 : 1; |
| 62 | bool b6 : 1; |
| 63 | bool msb : 1; |
| 64 | } __packed bits; |
| 65 | u8 byte; |
| 66 | } byte_t; |
| 67 | |
| 68 | MOS_STATIC_ASSERT(sizeof(byte_t) == 1, "byte_t is not 1 byte" ); |
| 69 | |
| 70 | typedef u32 id_t; |
| 71 | typedef u32 uid_t; |
| 72 | typedef u32 gid_t; |
| 73 | |
| 74 | typedef s32 pid_t; |
| 75 | typedef s32 tid_t; |
| 76 | |
| 77 | typedef s32 fd_t; |
| 78 | |
| 79 | typedef signed long ssize_t; |
| 80 | typedef ssize_t off_t; |
| 81 | |
| 82 | typedef long pte_content_t; |
| 83 | |
| 84 | #define new_named_opaque_type(base, name, type) \ |
| 85 | typedef struct \ |
| 86 | { \ |
| 87 | base name; \ |
| 88 | } type |
| 89 | |
| 90 | #define new_opaque_type(type, name) new_named_opaque_type(type, name, name##_t) |
| 91 | #define new_opaque_ptr_type(name) new_named_opaque_type(ptr_t, ptr, name) |
| 92 | |
| 93 | new_opaque_type(size_t, hash); |
| 94 | |
| 95 | typedef s32 futex_word_t; |
| 96 | |
| 97 | #ifndef __cplusplus |
| 98 | #define __atomic(type) _Atomic(type) |
| 99 | typedef __atomic(size_t) atomic_t; |
| 100 | #endif |
| 101 | |