* Copyright (c) 2025 Huawei Technologies Co., Ltd.
* This program is free software, you can redistribute it and/or modify it under the terms and conditions of
* CANN Open Software License Agreement Version 2.0 (the "License").
* Please refer to the License for details. You may not use this file except in compliance with the License.
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
* See LICENSE in the root of the software repository for the full text of the License.
*/
#ifndef LOG_LEVEL_H
#define LOG_LEVEL_H
#include <stdbool.h>
#include "log_error_code.h"
#include "log_config.h"
#include "slog.h"
#define LEVEL_NOTIFY_FILE "level_notify"
#define IOCTL_MODULE_NAME "module"
#define GLOABLE_DEFAULT_LOG_LEVEL (DLOG_ERROR)
#define GLOABLE_DEFAULT_DEBUG_LOG_LEVEL (DLOG_ERROR)
#define GLOABLE_DEFAULT_RUN_LOG_LEVEL (DLOG_INFO)
#define GLOABLE_DEFAULT_STDOUT_LOG_LEVEL (DLOG_DEBUG)
#define GLOABLE_DEFAULT_SECURITY_LOG_LEVEL (DLOG_DEBUG)
#define MODULE_DEFAULT_LOG_LEVEL (DLOG_ERROR)
#define MODULE_INIT_LOG_LEVEL 3
#define DEFAULT_GROUP_ID 0
#define INVAILD_GROUP_ID (-1)
#define MAX_DEVICE_NUM 4
#define LOG_LEVEL_DEFAULT 0b00000001
#define LOG_LEVEL_SYNC 0b00000010
#define LOG_LEVEL_USER 0b00000100
enum {
LOG_LEVEL_DEBUG,
LOG_LEVEL_INFO,
LOG_LEVEL_WARN,
LOG_LEVEL_ERROR,
LOG_LEVEL_NULL,
LOG_INVALID_LEVEL,
};
#define LOG_MIN_LEVEL LOG_LEVEL_DEBUG
#define LOG_MAX_LEVEL LOG_LEVEL_NULL
typedef struct {
char configName[CONF_NAME_MAX_LEN + 1];
int32_t configValue[INVLID_MOUDLE_ID];
} LogLevelConfInfo;
typedef enum {
LOGLEVEL_GLOBAL = 0,
LOGLEVEL_MODULE,
LOGLEVEL_EVENT
} LogLevelType;
typedef struct LogLevelCtrl {
bool levelSetted;
bool enableEvent;
int8_t globalLogLevel;
int32_t levelStatus;
} LogLevelCtrl;
#define DEFINE_LOG_LEVEL_CTRL(var) LogLevelCtrl var = { \
false, true, GLOABLE_DEFAULT_LOG_LEVEL, \
LOG_LEVEL_DEFAULT \
}
typedef struct TagModuleInfo {
const char *moduleName;
const int32_t moduleId;
bool multiFlag;
int8_t moduleLevel;
int8_t moduleLevels[MAX_DEVICE_NUM];
int32_t groupId;
} ModuleInfo;
#define SINGL_MODULE_MAP(x, y) { #x, x, false, y, {-1, -1, -1, -1}, INVAILD_GROUP_ID }
#define MULTI_MODULE_MAP(x, y) { #x, x, true, -1, {y, y, y, y}, INVAILD_GROUP_ID }
#define DEFINE_MODULE_LEVEL(var) ModuleInfo (var)[INVLID_MOUDLE_ID + 1] = { \
SINGL_MODULE_MAP(SLOG, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(IDEDD, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(SCC, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(HCCL, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(FMK, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(CCU, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(DVPP, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(RUNTIME, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(CCE, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(HDC, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(DRV, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(NET, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(12, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(13, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(14, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(15, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(16, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(17, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(18, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(19, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(20, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(21, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(DEVMM, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(KERNEL, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(LIBMEDIA, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(CCECPU, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(26, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(ROS, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(HCCP, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(ROCE, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(TEFUSION, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(PROFILING, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(DP, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(APP, MODULE_INIT_LOG_LEVEL), \
MULTI_MODULE_MAP(TS, MODULE_INIT_LOG_LEVEL), \
MULTI_MODULE_MAP(TSDUMP, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(AICPU, MODULE_INIT_LOG_LEVEL), \
MULTI_MODULE_MAP(LP, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(TDT, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(FE, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(MD, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(MB, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(ME, MODULE_INIT_LOG_LEVEL), \
MULTI_MODULE_MAP(IMU, MODULE_INIT_LOG_LEVEL), \
MULTI_MODULE_MAP(IMP, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(GE, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(46, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(CAMERA, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(ASCENDCL, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(TEEOS, MODULE_INIT_LOG_LEVEL), \
MULTI_MODULE_MAP(ISP, MODULE_INIT_LOG_LEVEL), \
MULTI_MODULE_MAP(SIS, MODULE_INIT_LOG_LEVEL), \
MULTI_MODULE_MAP(HSM, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(DSS, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(PROCMGR, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(BBOX, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(AIVECTOR, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(TBE, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(FV, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(59, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(TUNE, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(HSS, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(FFTS, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(OP, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(UDF, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(HICAID, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(TSYNC, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(AUDIO, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(TPRT, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(ASCENDCKERNEL, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(ASYS, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(ATRACE, MODULE_INIT_LOG_LEVEL), \
MULTI_MODULE_MAP(RTC, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(SYSMONITOR, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(AML, MODULE_INIT_LOG_LEVEL), \
SINGL_MODULE_MAP(ADETECT, MODULE_INIT_LOG_LEVEL), \
{NULL, -1, false, -1, {-1, -1, -1, -1}, -1} \
}
typedef struct TagLevelInfo {
const char *levelName;
const int32_t levelId;
} LevelInfo;
#define DEFINE_LEVEL_TYPES(var) LevelInfo var[] = { \
{ "DEBUG", DLOG_DEBUG }, \
{ "INFO", DLOG_INFO }, \
{ "WARNING", DLOG_WARN }, \
{ "ERROR", DLOG_ERROR }, \
{ "NULL", DLOG_NULL }, \
{ NULL, -1, }, \
{ NULL, -1, }, \
{ NULL, -1, }, \
{ NULL, -1, }, \
{ NULL, -1, }, \
{ NULL, -1, }, \
{ NULL, -1, }, \
{ NULL, -1, }, \
{ NULL, -1, }, \
{ NULL, -1, }, \
{ NULL, -1, }, \
{ "EVENT", DLOG_EVENT }, \
}
#endif