更新时间:2021-07-08 GMT+08:00
分享

开发指导

错误码简介

调用API接口时可能会出现错误,此时接口会返回对应的错误码,以便快速定位错误原因。

错误码是一个32位的无符号整型数,31~24位表示错误等级,23~16位表示错误码标志(当前该标志值为0),15~8位代表错误码所属模块,7~0位表示错误码序号。

表1 错误码中的错误等级

错误等级

数值

含义

NORMAL

0

提示

WARN

1

告警

ERR

2

严重

FATAL

3

致命

例如将任务模块中的错误码LOS_ERRNO_TSK_NO_MEMORY定义为FATAL级别的错误,模块ID为LOS_MOD_TSK,错误码序号为0,其定义如下:

#define LOS_ERRNO_TSK_NO_MEMORY  LOS_ERRNO_OS_FATAL(LOS_MOD_TSK, 0x00)
#define LOS_ERRNO_OS_FATAL(MID, ERRNO)  \
    (LOS_ERRTYPE_FATAL | LOS_ERRNO_OS_ID | ((UINT32)(MID) << 8) | ((UINT32)(ERRNO)))

LOS_ERRTYPE_FATAL:错误等级为FATAL,值为0x03000000

LOS_ERRNO_OS_ID:错误码标志,值为0x000000

MID:所属模块,LOS_MOD_TSK的值为0x2

ERRNO:错误码序号

所以LOS_ERRNO_TSK_NO_MEMORY的值为0x03000200

错误码接管

有时只靠错误码不能快速准确的定位问题,为方便用户分析错误,错误处理模块支持注册错误处理的钩子函数,发生错误时,用户可以调用LOS_ErrHandle接口以执行错误处理函数。

Huawei LiteOS 的错误处理模块为用户提供下面几个接口,接口详细信息可以查看API参考。

接口名

描述

参数

备注

LOS_RegErrHandle

注册错误处理钩子函数

func:错误处理钩子函数

-

LOS_ErrHandle

调用钩子函数,处理错误

fileName:存放错误日志的文件名

系统内部调用时,入参为"os_unspecific_file"

lineNo:发生错误的代码行号

系统内部调用时,若值为0xa1b2c3f8,表示未传递行号

errnoNo:错误码

-

paraLen:入参para的长度

系统内部调用时,入参为0

para:错误标签

系统内部调用时,入参为NULL

系统内部会在某些难以定位的错误处,主动调用注册的钩子函数(目前只在互斥锁模块和信号量模块中主动调用了钩子函数)。

相关文档