• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2009-2022 Huawei Technologies Co., Ltd. All rights reserved.
3  *
4  * UniProton is licensed under Mulan PSL v2.
5  * You can use this software according to the terms and conditions of the Mulan PSL v2.
6  * You may obtain a copy of Mulan PSL v2 at:
7  *          http://license.coscl.org.cn/MulanPSL2
8  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
9  * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
10  * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
11  * See the Mulan PSL v2 for more details.
12  * Create: 2009-12-22
13  * Description: 定义基本数据类型和数据结构。
14  */
15 #ifndef PRT_TYPEDEF_H
16 #define PRT_TYPEDEF_H
17 
18 #include <stdint.h>
19 #include <stdbool.h>
20 
21 #ifdef __cplusplus
22 #if __cplusplus
23 extern "C" {
24 #endif /* __cpluscplus */
25 #endif /* __cpluscplus */
26 
27 typedef unsigned char U8;
28 typedef unsigned short U16;
29 typedef unsigned int U32;
30 typedef unsigned long long U64;
31 typedef signed char S8;
32 typedef signed short S16;
33 typedef signed int S32;
34 typedef signed long long S64;
35 
36 typedef void *VirtAddr;
37 typedef void *PhyAddr;
38 
39 #ifndef OS_SEC_ALW_INLINE
40 #define OS_SEC_ALW_INLINE
41 #endif
42 
43 #ifndef INLINE
44 #define INLINE static __inline __attribute__((always_inline))
45 #endif
46 
47 #ifndef OS_EMBED_ASM
48 #define OS_EMBED_ASM __asm__ __volatile__
49 #endif
50 
51 /* 参数不加void表示可以传任意个参数 */
52 typedef void (*OsVoidFunc)(void);
53 
54 #define ALIGN(addr, boundary) (((uintptr_t)(addr) + (boundary) - 1) & ~((uintptr_t)(boundary) - 1))
55 #define TRUNCATE(addr, size)  ((addr) & ~((uintptr_t)(size) - 1))
56 
57 #ifdef YES
58 #undef YES
59 #endif
60 #define YES 1
61 
62 #ifdef NO
63 #undef NO
64 #endif
65 #define NO 0
66 
67 #ifndef FALSE
68 #define FALSE ((bool)0)
69 #endif
70 
71 #ifndef TRUE
72 #define TRUE ((bool)1)
73 #endif
74 
75 #ifndef NULL
76 #define NULL ((void *)0)
77 #endif
78 
79 #define OS_ERROR   (U32)(-1)
80 #define OS_INVALID (-1)
81 
82 #ifndef OS_OK
83 #define OS_OK 0
84 #endif
85 
86 #ifndef OS_FAIL
87 #define OS_FAIL 1
88 #endif
89 
90 #ifndef U8_INVALID
91 #define U8_INVALID 0xffU
92 #endif
93 
94 #ifndef U12_INVALID
95 #define U12_INVALID 0xfffU
96 #endif
97 
98 #ifndef U16_INVALID
99 #define U16_INVALID 0xffffU
100 #endif
101 
102 #ifndef U32_INVALID
103 #define U32_INVALID 0xffffffffU
104 #endif
105 
106 #ifndef U64_INVALID
107 #define U64_INVALID 0xffffffffffffffffUL
108 #endif
109 
110 #ifndef U32_MAX
111 #define U32_MAX 0xFFFFFFFFU
112 #endif
113 
114 #ifndef S32_MAX
115 #define S32_MAX 0x7FFFFFFF
116 #endif
117 
118 #ifndef S32_MIN
119 #define S32_MIN (-S32_MAX-1)
120 #endif
121 
122 #ifndef LIKELY
123 #define LIKELY(x) __builtin_expect(!!(x), 1)
124 #endif
125 
126 #ifndef UNLIKELY
127 #define UNLIKELY(x) __builtin_expect(!!(x), 0)
128 #endif
129 
130 #ifdef __cplusplus
131 #if __cplusplus
132 }
133 #endif /* __cpluscplus */
134 #endif /* __cpluscplus */
135 
136 #endif /* PRT_TYPEDEF_H */
137