550W Document
550W, a high-end OS
types.h
浏览该文件的文档.
1 #pragma once
2 
3 #include <common/errno.h>
4 
5 #ifndef NULL
6 #define NULL (void *)0
7 #endif
8 
9 #ifndef TRUE
10 #define TRUE 1
11 #define FALSE 0
12 #endif
13 
14 #ifndef true
15 #define true 1
16 #define false 0
17 #endif
18 
19 #define __riscv_xlen 64
20 
21 typedef unsigned __attribute__((__mode__(QI))) int8_t;
22 typedef unsigned __attribute__((__mode__(QI))) uint8_t;
23 typedef int __attribute__((__mode__(HI))) int16_t;
24 typedef unsigned __attribute__((__mode__(HI))) uint16_t;
25 typedef int __attribute__((__mode__(SI))) int32_t;
26 typedef unsigned __attribute__((__mode__(SI))) uint32_t;
27 typedef int __attribute__((__mode__(DI))) int64_t;
28 typedef unsigned __attribute__((__mode__(DI))) uint64_t;
29 
30 typedef int bool;
31 
32 typedef char int8;
33 typedef unsigned char uint8;
34 typedef short int16;
35 typedef unsigned short uint16;
36 typedef int int32;
37 typedef unsigned int uint32;
38 typedef long long int64;
39 typedef unsigned long long uint64;
40 typedef unsigned int uint;
41 
42 typedef int pid_t;
43 typedef uint64_t reg_t;
44 typedef uint64_t ptr_t;
45 #if __riscv_xlen == 64
46 typedef int64 intptr_t;
47 typedef uint64 uintptr_t;
48 #elif __riscv_xlen == 32
49 typedef int32_t intptr_t;
50 typedef uint32_t uintptr_t;
51 #endif
52 
53 /* size_t is used for memory object sizes */
54 typedef uintptr_t size_t;
55 typedef intptr_t ssize_t;
57 
58 typedef int8_t __s8;
59 typedef uint8_t __u8;
60 typedef int16_t __s16;
61 typedef uint16_t __u16;
62 typedef int32_t __s32;
63 typedef uint32_t __u32;
64 typedef int64_t __s64;
65 typedef uint64_t __u64;
66 
67 typedef __s8 s8;
68 typedef __u8 u8;
69 typedef __s16 s16;
70 typedef __u16 u16;
71 typedef __s32 s32;
72 typedef __u32 u32;
73 typedef int64_t s64;
74 typedef uint64_t u64;
75 
76 typedef uint8_t byte_size_t;
77 
78 #ifndef __kernel_long_t
79 typedef long __kernel_long_t;
80 typedef unsigned long __kernel_ulong_t;
81 #endif
82 
83 #ifndef __kernel_ino_t
85 #endif
86 
87 #ifndef __kernel_mode_t
88 typedef unsigned int __kernel_mode_t;
89 #endif
90 
91 #ifndef __kernel_pid_t
92 typedef int __kernel_pid_t;
93 #endif
94 
95 #ifndef __kernel_ipc_pid_t
96 typedef int __kernel_ipc_pid_t;
97 #endif
98 
99 #ifndef __kernel_uid_t
100 typedef unsigned int __kernel_uid_t;
101 typedef unsigned int __kernel_gid_t;
102 #endif
103 
104 #ifndef __kernel_suseconds_t
106 #endif
107 
108 #ifndef __kernel_daddr_t
109 typedef int __kernel_daddr_t;
110 #endif
111 
112 #ifndef __kernel_uid32_t
113 typedef unsigned int __kernel_uid32_t;
114 typedef unsigned int __kernel_gid32_t;
115 #endif
116 
117 #ifndef __kernel_dev_t
118 typedef unsigned int __kernel_dev_t;
119 #endif
120 
121 /*
122  * Most 32 bit architectures use "unsigned int" size_t,
123  * and all 64 bit architectures use "unsigned long" size_t.
124  */
125 #ifndef __kernel_size_t
126 #if __BITS_PER_LONG != 64
127 typedef unsigned int __kernel_size_t;
128 typedef int __kernel_ssize_t;
129 typedef int __kernel_ptrdiff_t;
130 #else
134 #endif
135 #endif
136 
137 #ifndef __kernel_fsid_t
138 typedef struct {
139  int val[2];
141 #endif
142 
143 /*
144  * anything below here should be completely generic
145  */
147 typedef long long __kernel_loff_t;
149 typedef long long __kernel_time64_t;
151 typedef int __kernel_timer_t;
153 typedef char *__kernel_caddr_t;
154 typedef unsigned short __kernel_uid16_t;
155 typedef unsigned short __kernel_gid16_t;
156 
157 typedef unsigned short umode_t;
158 typedef unsigned int mode_t;
159 typedef long int off_t;
160 typedef int32_t hartid_t;
161 
162 /* Minimum of signed integral types. */
163 #define INT8_MIN (-128)
164 #define INT16_MIN (-32767 - 1)
165 #define INT32_MIN (-2147483647 - 1)
166 #define INT64_MIN (-9223372036854775807lu - 1)
167 /* Maximum of signed integral types. */
168 #define INT8_MAX (127)
169 #define INT16_MAX (32767)
170 #define INT32_MAX (2147483647)
171 #define INT64_MAX (9223372036854775807lu)
172 
173 /* Maximum of unsigned integral types. */
174 #define UINT8_MAX (255)
175 #define UINT16_MAX (65535)
176 #define UINT32_MAX (4294967295U)
177 #define UINT64_MAX (18446744073709551615lu)
178 
179 #define ULONG_MAX (0xffffffffffffffffULL)
180 #define LONG_MAX (0x7fffffffffffffffLL)
181 #define INTMAX_MAX LONG_MAX
182 #define UINT_MAX (0xffffffffU)
183 #define INT_MAX (0x7fffffff)
184 #define UCHAR_MAX (0xffU)
185 #define CHAR_MAX (0x7f)
186 
187 #define readb(addr) (*(volatile uint8 *)(addr))
188 #define readw(addr) (*(volatile uint16 *)(addr))
189 #define readd(addr) (*(volatile uint32 *)(addr))
190 #define readq(addr) (*(volatile uint64 *)(addr))
191 
192 /* clang-format off */
193 #define writeb(v, addr) \
194  { \
195  (*(volatile uint8 *)(addr)) = (v); \
196  }
197 #define writew(v, addr) \
198  { \
199  (*(volatile uint16 *)(addr)) = (v); \
200  }
201 #define writed(v, addr) \
202  { \
203  (*(volatile uint32 *)(addr)) = (v); \
204  }
205 #define writeq(v, addr) \
206  { \
207  (*(volatile uint64 *)(addr)) = (v); \
208  }
209 /* clang-format on */
Definition: types.h:138
unsigned int __kernel_dev_t
Definition: types.h:118
unsigned int __kernel_uid_t
Definition: types.h:100
int __kernel_ptrdiff_t
Definition: types.h:129
unsigned short uint16
Definition: types.h:35
int8_t __s8
Definition: types.h:58
int bool
Definition: types.h:30
__u8 u8
Definition: types.h:68
unsigned int uint32
Definition: types.h:37
__s32 s32
Definition: types.h:71
__s16 s16
Definition: types.h:69
__kernel_long_t __kernel_off_t
Definition: types.h:146
int pid_t
Definition: types.h:42
unsigned long long uint64
Definition: types.h:39
char * __kernel_caddr_t
Definition: types.h:153
int __kernel_ssize_t
Definition: types.h:128
int64_t s64
Definition: types.h:73
int32_t __s32
Definition: types.h:62
unsigned int __kernel_size_t
Definition: types.h:127
uint32_t __u32
Definition: types.h:63
__kernel_long_t __kernel_suseconds_t
Definition: types.h:105
int __kernel_timer_t
Definition: types.h:151
int __kernel_clock_ids_t
Definition: types.h:152
uint64_t ptr_t
Definition: types.h:44
uint64_t u64
Definition: types.h:74
unsigned int __kernel_uid32_t
Definition: types.h:113
short int16
Definition: types.h:34
__kernel_long_t __kernel_time_t
Definition: types.h:148
__u32 u32
Definition: types.h:72
int64_t __s64
Definition: types.h:64
__u16 u16
Definition: types.h:70
__kernel_long_t __kernel_clock_t
Definition: types.h:150
unsigned int __kernel_mode_t
Definition: types.h:88
int int32
Definition: types.h:36
int32_t hartid_t
Definition: types.h:160
__kernel_ulong_t __kernel_ino_t
Definition: types.h:84
long long __kernel_loff_t
Definition: types.h:147
uint64_t reg_t
Definition: types.h:43
unsigned short __kernel_gid16_t
Definition: types.h:155
int64 intptr_t
Definition: types.h:46
uint8_t __u8
Definition: types.h:59
unsigned int uint
Definition: types.h:40
long int off_t
Definition: types.h:159
uintptr_t ptrdiff_t
Definition: types.h:56
int16_t __s16
Definition: types.h:60
unsigned short umode_t
Definition: types.h:157
unsigned int __kernel_gid32_t
Definition: types.h:114
int __kernel_ipc_pid_t
Definition: types.h:96
unsigned int __kernel_gid_t
Definition: types.h:101
int __kernel_daddr_t
Definition: types.h:109
uint16_t __u16
Definition: types.h:61
uint64_t __u64
Definition: types.h:65
uint8_t byte_size_t
Definition: types.h:76
long __kernel_long_t
Definition: types.h:79
int __kernel_pid_t
Definition: types.h:92
uint64 uintptr_t
Definition: types.h:47
unsigned int mode_t
Definition: types.h:158
unsigned char uint8
Definition: types.h:33
unsigned long __kernel_ulong_t
Definition: types.h:80
char int8
Definition: types.h:32
long long __kernel_time64_t
Definition: types.h:149
unsigned short __kernel_uid16_t
Definition: types.h:154
__s8 s8
Definition: types.h:67
long long int64
Definition: types.h:38
intptr_t ssize_t
Definition: types.h:55
uintptr_t size_t
Definition: types.h:54
unsigned __attribute__((__mode__(QI))) int8_t
Definition: types.h:21