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