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 | |