41#ifdef LOSCFG_SAVE_EXCINFO
53#define LOG_FLAG "GOODLOG"
74#ifdef LOSCFG_SAVE_EXCINFO
87#ifdef LOSCFG_SAVE_EXCINFO
92 BBOX_PRINT_ERR(
"Alloc mem failed!\n");
98 if (LOSCFG_BLACKBOX_LOG_SIZE <
sizeof(
struct FaultLogInfo)) {
99 BBOX_PRINT_ERR(
"LOSCFG_BLACKBOX_LOG_SIZE [%d] is too short, it must be >= %u\n",
110 g_logBuffer = (
char *)MEM_CACHED_ADDR(LOSCFG_BLACKBOX_RESERVE_MEM_ADDR);
111 BBOX_PRINT_INFO(
"g_logBuffer: %p, len: 0x%x for blackbox!\n",
g_logBuffer, (
UINT32)LOSCFG_BLACKBOX_LOG_SIZE);
120 if (logDir == NULL ||
info == NULL) {
121 BBOX_PRINT_ERR(
"logDir: %p, info: %p!\n", logDir,
info);
125 BBOX_PRINT_ERR(
"g_logBuffer is NULL, alloc physical pages failed!\n");
129 if (strcmp(
info->
event, EVENT_PANIC) == 0) {
131 (
void)memset_s(pLogInfo,
sizeof(*pLogInfo), 0,
sizeof(*pLogInfo));
132#ifdef LOSCFG_SAVE_EXCINFO
137 (
void)memcpy_s(&pLogInfo->
flag,
sizeof(pLogInfo->
flag), LOG_FLAG, strlen(LOG_FLAG));
138 (
void)memcpy_s(&pLogInfo->
info,
sizeof(pLogInfo->
info),
info,
sizeof(*info));
141#ifdef LOSCFG_SAVE_EXCINFO
153 BBOX_PRINT_ERR(
"info is NULL!\n");
157 if (strcmp(
info->
event, EVENT_PANIC) != 0) {
169 BBOX_PRINT_ERR(
"info is NULL!\n");
173 BBOX_PRINT_ERR(
"g_logBuffer is NULL, alloc physical pages failed!\n");
178 if (
memcmp(pLogInfo->
flag, LOG_FLAG, strlen(LOG_FLAG)) == 0) {
191 if (logDir == NULL ||
info == NULL) {
192 BBOX_PRINT_ERR(
"logDir: %p, info: %p!\n", logDir,
info);
196 BBOX_PRINT_ERR(
"g_logBuffer is NULL, alloc physical pages failed!\n");
201 if (
memcmp(pLogInfo->
flag, LOG_FLAG, strlen(LOG_FLAG)) == 0) {
203 Min(LOSCFG_BLACKBOX_LOG_SIZE -
sizeof(*pLogInfo), pLogInfo->
len),
info);
205 (
void)memset_s(
g_logBuffer, LOSCFG_BLACKBOX_LOG_SIZE, 0, LOSCFG_BLACKBOX_LOG_SIZE);
213 BBOX_PRINT_ERR(
"LOSCFG_FS_VFS isn't defined!\n");
218#ifdef LOSCFG_BLACKBOX_TEST
225 .GetLastLogInfo = NULL,
230 BBOX_PRINT_ERR(
"BBoxRegisterModuleOps failed!\n");
233 BBoxNotifyError(
"EVENT_TEST1",
"MODULE_TEST",
"Test BBoxNotifyError111", 0);
251 BBOX_PRINT_ERR(
"BBoxRegisterModuleOps failed!\n");
256 BBOX_PRINT_ERR(
"AllocLogBuffer failed!\n");
259#ifdef LOSCFG_BLACKBOX_TEST
VOID LOS_ExcInfoRegHook(UINT32 startAddr, UINT32 space, CHAR *buf, log_read_write_fn hook)
Register recording exception information function.
int BBoxNotifyError(const char event[EVENT_MAX_LEN], const char module[MODULE_MAX_LEN], const char errorDesc[ERROR_DESC_MAX_LEN], int needSysReset)
int BBoxRegisterModuleOps(struct ModuleOps *ops)
int FullWriteFile(const char *filePath, const char *buf, size_t bufSize, int isAppend)
int SaveBasicErrorInfo(const char *filePath, const struct ErrorInfo *info)
int UploadEventByFile(const char *filePath)
static int SaveLastLog(const char *logDir, struct ErrorInfo *info)
static int AllocLogBuffer(void)
static void SaveFaultLog(const char *filePath, const char *dataBuf, size_t bufSize, struct ErrorInfo *info)
int OsBBoxSystemAdapterInit(void)
static char * g_logBuffer
static void BBoxTest(void)
static void Reset(struct ErrorInfo *info)
static void Dump(const char *logDir, struct ErrorInfo *info)
static int GetLastLogInfo(struct ErrorInfo *info)
LOS_MODULE_INIT(OsBBoxSystemAdapterInit, LOS_INIT_LEVEL_PLATFORM)
static void WriteExcFile(UINT32 startAddr, UINT32 space, UINT32 rwFlag, char *buf)
static void RegisterExcInfoHook(void)
UINT32 GetExcInfoIndex(VOID)
获取异常信息索引位
VOID DCacheFlushRange(UINT32 start, UINT32 end)
int memcmp(const void *str1, const void *str2, size_t n)
char module[MODULE_MAX_LEN]
char event[EVENT_MAX_LEN]
char module[MODULE_MAX_LEN]
ARG_NUM_3 ARG_NUM_1 ARG_NUM_2 ARG_NUM_2 ARG_NUM_3 ARG_NUM_1 ARG_NUM_4 ARG_NUM_2 ARG_NUM_2 ARG_NUM_5 ARG_NUM_2 void