* Copyright (c) 2025 HiSilicon Technologies Co., Ltd. All rights reserved.
* 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 FIT FOR A PARTICULAR PURPOSE.
*/
#ifndef _UMMU_LOG_H_
#define _UMMU_LOG_H_
#include <stdbool.h>
#include <syslog.h>
#include <stdarg.h>
#include <stdio.h>
#include <unistd.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef enum ummu_vlog_level {
UMMU_VLOG_LEVEL_EMERG = 0,
UMMU_VLOG_LEVEL_ALERT = 1,
UMMU_VLOG_LEVEL_CRIT = 2,
UMMU_VLOG_LEVEL_ERR = 3,
UMMU_VLOG_LEVEL_WARNING = 4,
UMMU_VLOG_LEVEL_NOTICE = 5,
UMMU_VLOG_LEVEL_INFO = 6,
UMMU_VLOG_LEVEL_DEBUG = 7,
UMMU_VLOG_LEVEL_MAX = 8,
} ummu_vlog_level_t;
bool ummu_log_drop(ummu_vlog_level_t level);
void ummu_log(const char *function, int line, ummu_vlog_level_t level, const char *format, ...)
__attribute__ ((format (gnu_printf, 4, 5)));
void ummu_init_log_level(void);
#define UMMU_LOG(l, ...) \
if (!ummu_log_drop(UMMU_VLOG_LEVEL_##l)) { \
ummu_log(__func__, __LINE__, UMMU_VLOG_LEVEL_##l, __VA_ARGS__); \
}
#define UMMU_MAPT_INFO_LOG(...) UMMU_LOG(INFO, __VA_ARGS__)
#define UMMU_MAPT_ERROR_LOG(...) UMMU_LOG(ERR, __VA_ARGS__)
#define UMMU_MAPT_WARN_LOG(...) UMMU_LOG(WARNING, __VA_ARGS__)
#define UMMU_MAPT_DEBUG_LOG(...) UMMU_LOG(DEBUG, __VA_ARGS__)
#ifdef __cplusplus
}
#endif
#endif