• 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_ERR_EXTERNAL_H
16 #define PRT_ERR_EXTERNAL_H
17 
18 #include "prt_err.h"
19 
20 extern void OsErrHandle(const char *fileName, U32 lineNo, U32 errorNo, U32 paraLen, void *para);
21 extern void OsErrRecord(U32 errorNo);
22 /*
23  * 模块间宏定义
24  */
25 #define OS_ERR_RECORD_N 3  // 表示保留二进制低n位,计算OS_ERR_RECORD_NUM用,OS_ERR_RECORD_NUM为2的n次方+1
26 
27 #define OS_ERR_RECORD_NUM \
28     ((1U << OS_ERR_RECORD_N) + 1)  // 2的n次方+1,目前n取3,NUM为9,第一次错误固定记录,后面8个循环记录。
29 
30 #define OS_ERR_MAGIC_WORD 0xa1b2d4f8
31 
32 #define OS_ERR_LEVEL_HIGH 0
33 #define OS_ERR_LEVEL_LOW 2
34 #define OS_LOG_LEVEL_FORCE 0xFF
35 
36 #define OS_REPORT_ERROR(errNo)                                       \
37     do {                                                             \
38         OsErrHandle("os_file", OS_ERR_MAGIC_WORD, (errNo), 0, NULL); \
39     } while (0)
40 
41 /* 用于OS_OPTION_NFTL_ERR_POST_PROC */
42 #define OS_ERROR_TYPE_NUM (ERRTYPE_FATAL >> 24) /* 中断中需要延后处理的错误类型(所有低于FATAL等级的类型)数 */
43 
44 /* errno中错误大类的类型掩码 */
45 #define OS_ERROR_TYPE_MASK (0xffU << 24)
46 
47 #define OS_ERROR_LOG_REPORT(traceLevel, format, ...)
48 
49 #if defined(OS_DBG)
50 #define LOG_ADDR_DBG(addr) (addr)
51 #define OS_LOG_REPORT_DBG(format, ...) OS_ERROR_LOG_REPORT(OS_ERR_LEVEL_HIGH, (format), ##__VA_ARGS__)
52 #else
53 #define LOG_ADDR_DBG(addr) ((void)(addr), 0x0U)
54 #define OS_LOG_REPORT_DBG(format, ...)
55 #endif
56 
57 extern void OsErrRecordInCda(U32 errorNo);
58 extern U32 OsFatalErrClr(void);
59 
60 // 函数返回值void的,都通过此接口记录返回值到cda
61 #define OS_ERR_RECORD(errorNo)          \
62     do {                                \
63         U32 errorNo_ = (errorNo);       \
64         if (errorNo_ != OS_OK) {       \
65             OsErrRecordInCda(errorNo_); \
66         }                               \
67     } while (0)
68 
69 #endif /* PRT_ERR_EXTERNAL_H */
70