fix(log): 修复默认日志实例命名冲突并优化宏定义
将 `logger_root` 重命名为 `__default_logger_root` 以避免潜在的符号冲突, 同时简化日志宏定义逻辑,提升代码可读性与维护性。此外,为防止 clang-format 格式化影响日志宏的排版,添加了 clang-format 开关注释。 refactor(memory): 优化 memcmp 函数中的 switch-case 结构 在 `smcc_memcmp` 函数中为每个 case 添加 `/* fall through */` 注释, 明确表示故意穿透到下一个 case,提高代码意图的清晰度,并增强静态分析工具的兼容性。
This commit is contained in:
@@ -222,81 +222,97 @@ int smcc_memcmp(const void *s1, const void *s2, usize n) {
|
|||||||
i = 15;
|
i = 15;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/* fall through */
|
||||||
case 15:
|
case 15:
|
||||||
if (p1[14] != p2[14]) {
|
if (p1[14] != p2[14]) {
|
||||||
i = 14;
|
i = 14;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/* fall through */
|
||||||
case 14:
|
case 14:
|
||||||
if (p1[13] != p2[13]) {
|
if (p1[13] != p2[13]) {
|
||||||
i = 13;
|
i = 13;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/* fall through */
|
||||||
case 13:
|
case 13:
|
||||||
if (p1[12] != p2[12]) {
|
if (p1[12] != p2[12]) {
|
||||||
i = 12;
|
i = 12;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/* fall through */
|
||||||
case 12:
|
case 12:
|
||||||
if (p1[11] != p2[11]) {
|
if (p1[11] != p2[11]) {
|
||||||
i = 11;
|
i = 11;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/* fall through */
|
||||||
case 11:
|
case 11:
|
||||||
if (p1[10] != p2[10]) {
|
if (p1[10] != p2[10]) {
|
||||||
i = 10;
|
i = 10;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/* fall through */
|
||||||
case 10:
|
case 10:
|
||||||
if (p1[9] != p2[9]) {
|
if (p1[9] != p2[9]) {
|
||||||
i = 9;
|
i = 9;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/* fall through */
|
||||||
case 9:
|
case 9:
|
||||||
if (p1[8] != p2[8]) {
|
if (p1[8] != p2[8]) {
|
||||||
i = 8;
|
i = 8;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/* fall through */
|
||||||
case 8:
|
case 8:
|
||||||
if (p1[7] != p2[7]) {
|
if (p1[7] != p2[7]) {
|
||||||
i = 7;
|
i = 7;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/* fall through */
|
||||||
case 7:
|
case 7:
|
||||||
if (p1[6] != p2[6]) {
|
if (p1[6] != p2[6]) {
|
||||||
i = 6;
|
i = 6;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/* fall through */
|
||||||
case 6:
|
case 6:
|
||||||
if (p1[5] != p2[5]) {
|
if (p1[5] != p2[5]) {
|
||||||
i = 5;
|
i = 5;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/* fall through */
|
||||||
case 5:
|
case 5:
|
||||||
if (p1[4] != p2[4]) {
|
if (p1[4] != p2[4]) {
|
||||||
i = 4;
|
i = 4;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/* fall through */
|
||||||
case 4:
|
case 4:
|
||||||
if (p1[3] != p2[3]) {
|
if (p1[3] != p2[3]) {
|
||||||
i = 3;
|
i = 3;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/* fall through */
|
||||||
case 3:
|
case 3:
|
||||||
if (p1[2] != p2[2]) {
|
if (p1[2] != p2[2]) {
|
||||||
i = 2;
|
i = 2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/* fall through */
|
||||||
case 2:
|
case 2:
|
||||||
if (p1[1] != p2[1]) {
|
if (p1[1] != p2[1]) {
|
||||||
i = 1;
|
i = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/* fall through */
|
||||||
case 1:
|
case 1:
|
||||||
if (p1[0] != p2[0]) {
|
if (p1[0] != p2[0]) {
|
||||||
i = 0;
|
i = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/* fall through */
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ void log_default_handler(log_level_t level, const char *module,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
logger_t logger_root = {
|
logger_t __default_logger_root = {
|
||||||
.name = "root",
|
.name = "root",
|
||||||
.level = LOG_LEVEL_ALL,
|
.level = LOG_LEVEL_ALL,
|
||||||
.handler = log_default_handler,
|
.handler = log_default_handler,
|
||||||
@@ -79,20 +79,20 @@ void init_logger(logger_t *logger, const char *name) {
|
|||||||
log_set_level(logger, LOG_LEVEL_ALL);
|
log_set_level(logger, LOG_LEVEL_ALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
logger_t *log_get(const char *name) { return &logger_root; }
|
logger_t *log_get(const char *name) { return &__default_logger_root; }
|
||||||
|
|
||||||
void log_set_level(logger_t *logger, int level) {
|
void log_set_level(logger_t *logger, int level) {
|
||||||
if (logger)
|
if (logger)
|
||||||
logger->level = level;
|
logger->level = level;
|
||||||
else
|
else
|
||||||
logger_root.level = level;
|
__default_logger_root.level = level;
|
||||||
}
|
}
|
||||||
|
|
||||||
void log_set_handler(logger_t *logger, log_handler handler) {
|
void log_set_handler(logger_t *logger, log_handler handler) {
|
||||||
if (logger)
|
if (logger)
|
||||||
logger->handler = handler;
|
logger->handler = handler;
|
||||||
else
|
else
|
||||||
logger_root.handler = handler;
|
__default_logger_root.handler = handler;
|
||||||
}
|
}
|
||||||
|
|
||||||
void logger_destroy(logger_t *logger) { return; }
|
void logger_destroy(logger_t *logger) { return; }
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ typedef struct logger {
|
|||||||
|
|
||||||
void log_default_handler(log_level_t level, const char *module,
|
void log_default_handler(log_level_t level, const char *module,
|
||||||
const char *file, int line, const char *message);
|
const char *file, int line, const char *message);
|
||||||
extern logger_t logger_root;
|
extern logger_t __default_logger_root;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 初始化日志实例 其余参数设置为默认值
|
* @brief 初始化日志实例 其余参数设置为默认值
|
||||||
@@ -129,11 +129,7 @@ void logger_destroy(logger_t *logger);
|
|||||||
*/
|
*/
|
||||||
#define _LOG(_module_, _level_, _msg_, ...) \
|
#define _LOG(_module_, _level_, _msg_, ...) \
|
||||||
do { \
|
do { \
|
||||||
logger_t *_logger; \
|
logger_t *_logger = _module_; \
|
||||||
if (!_module_) { \
|
|
||||||
_logger = log_get(NULL); \
|
|
||||||
} else \
|
|
||||||
_logger = _module_; \
|
|
||||||
if (_logger && _logger->handler && (_logger->level & (_level_))) { \
|
if (_logger && _logger->handler && (_logger->level & (_level_))) { \
|
||||||
log_snprintf(_logger->buf, sizeof(_logger->buf), (_msg_), \
|
log_snprintf(_logger->buf, sizeof(_logger->buf), (_msg_), \
|
||||||
##__VA_ARGS__); \
|
##__VA_ARGS__); \
|
||||||
@@ -142,41 +138,29 @@ void logger_destroy(logger_t *logger);
|
|||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
/* clang-format off */
|
||||||
/// @name 模块日志宏
|
/// @name 模块日志宏
|
||||||
/// @{
|
/// @{
|
||||||
#define MLOG_NOTSET(module, ...) \
|
#define MLOG_NOTSET(module, ...)_LOG(module, LOG_LEVEL_NOTSET, __VA_ARGS__) ///< 未分类日志
|
||||||
_LOG(module, LOG_LEVEL_NOTSET, __VA_ARGS__) ///< 未分类日志
|
#define MLOG_DEBUG(module, ...) _LOG(module, LOG_LEVEL_DEBUG, __VA_ARGS__) ///< 调试日志(需启用DEBUG级别)
|
||||||
#define MLOG_DEBUG(module, ...) \
|
#define MLOG_INFO(module, ...) _LOG(module, LOG_LEVEL_INFO, __VA_ARGS__) ///< 信息日志(常规运行日志)
|
||||||
_LOG(module, LOG_LEVEL_DEBUG, __VA_ARGS__) ///< 调试日志(需启用DEBUG级别)
|
#define MLOG_WARN(module, ...) _LOG(module, LOG_LEVEL_WARN, __VA_ARGS__) ///< 警告日志(潜在问题)
|
||||||
#define MLOG_INFO(module, ...) \
|
#define MLOG_ERROR(module, ...) _LOG(module, LOG_LEVEL_ERROR, __VA_ARGS__) ///< 错误日志(可恢复错误)
|
||||||
_LOG(module, LOG_LEVEL_INFO, __VA_ARGS__) ///< 信息日志(常规运行日志)
|
#define MLOG_FATAL(module, ...) _LOG(module, LOG_LEVEL_FATAL, __VA_ARGS__) ///< 致命错误日志(程序终止前)
|
||||||
#define MLOG_WARN(module, ...) \
|
#define MLOG_TRACE(module, ...) _LOG(module, LOG_LEVEL_TRACE, __VA_ARGS__) ///< 追踪日志(调用栈跟踪)
|
||||||
_LOG(module, LOG_LEVEL_WARN, __VA_ARGS__) ///< 警告日志(潜在问题)
|
|
||||||
#define MLOG_ERROR(module, ...) \
|
|
||||||
_LOG(module, LOG_LEVEL_ERROR, __VA_ARGS__) ///< 错误日志(可恢复错误)
|
|
||||||
#define MLOG_FATAL(module, ...) \
|
|
||||||
_LOG(module, LOG_LEVEL_FATAL, __VA_ARGS__) ///< 致命错误日志(程序终止前)
|
|
||||||
#define MLOG_TRACE(module, ...) \
|
|
||||||
_LOG(module, LOG_LEVEL_TRACE, __VA_ARGS__) ///< 追踪日志(调用栈跟踪)
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
/// @name 快捷日志宏
|
/// @name 快捷日志宏
|
||||||
/// @{
|
/// @{
|
||||||
#define LOG_NOTSET(...) \
|
#define LOG_NOTSET(...) _LOG(&__default_logger_root, LOG_LEVEL_NOTSET, __VA_ARGS__) ///< 未分类日志
|
||||||
_LOG(NULL, LOG_LEVEL_NOTSET, __VA_ARGS__) ///< 未分类日志
|
#define LOG_DEBUG(...) _LOG(&__default_logger_root, LOG_LEVEL_DEBUG, __VA_ARGS__) ///< 调试日志(需启用DEBUG级别)
|
||||||
#define LOG_DEBUG(...) \
|
#define LOG_INFO(...) _LOG(&__default_logger_root, LOG_LEVEL_INFO, __VA_ARGS__) ///< 信息日志(常规运行日志)
|
||||||
_LOG(NULL, LOG_LEVEL_DEBUG, __VA_ARGS__) ///< 调试日志(需启用DEBUG级别)
|
#define LOG_WARN(...) _LOG(&__default_logger_root, LOG_LEVEL_WARN, __VA_ARGS__) ///< 警告日志(潜在问题)
|
||||||
#define LOG_INFO(...) \
|
#define LOG_ERROR(...) _LOG(&__default_logger_root, LOG_LEVEL_ERROR, __VA_ARGS__) ///< 错误日志(可恢复错误)
|
||||||
_LOG(NULL, LOG_LEVEL_INFO, __VA_ARGS__) ///< 信息日志(常规运行日志)
|
#define LOG_FATAL(...) _LOG(&__default_logger_root, LOG_LEVEL_FATAL, __VA_ARGS__) ///< 致命错误日志(程序终止前)
|
||||||
#define LOG_WARN(...) \
|
#define LOG_TRACE(...) _LOG(&__default_logger_root, LOG_LEVEL_TRACE, __VA_ARGS__) ///< 追踪日志(调用栈跟踪)
|
||||||
_LOG(NULL, LOG_LEVEL_WARN, __VA_ARGS__) ///< 警告日志(潜在问题)
|
|
||||||
#define LOG_ERROR(...) \
|
|
||||||
_LOG(NULL, LOG_LEVEL_ERROR, __VA_ARGS__) ///< 错误日志(可恢复错误)
|
|
||||||
#define LOG_FATAL(...) \
|
|
||||||
_LOG(NULL, LOG_LEVEL_FATAL, __VA_ARGS__) ///< 致命错误日志(程序终止前)
|
|
||||||
#define LOG_TRACE(...) \
|
|
||||||
_LOG(NULL, LOG_LEVEL_TRACE, __VA_ARGS__) ///< 追踪日志(调用栈跟踪)
|
|
||||||
/// @}
|
/// @}
|
||||||
|
/* clang-format on */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @def _Assert
|
* @def _Assert
|
||||||
|
|||||||
Reference in New Issue
Block a user