lib/log: move internal log to public header
This change will allow external libs to register SPDK log flags and use log macros by external libs. Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I03ef088580bbf23bd22ad1a36817ca84c5ba8edd Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3954 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
2172c432cf
commit
ffbddd4f3e
@ -19,6 +19,13 @@ Updated intel-ipsec-mb submodule to v0.54
|
||||
|
||||
Updated ISA-L submodule to v2.29.0.
|
||||
|
||||
## log
|
||||
|
||||
A log flag structure, `spdk_log_register_flag`, `spdk_log_get_first_flag`,
|
||||
`spdk_log_get_next_flag` and macro `SPDK_LOG_REGISTER_COMPONENT`, have been added which
|
||||
enable registering and interacting with log flags. Added `SPDK_INFOLOG`, `SPDK_DEBUGLOG`
|
||||
and `SPDK_LOGDUMP` macros to display logs for specified log flag.
|
||||
|
||||
### ocf
|
||||
|
||||
Updated OCF submodule to v20.03.1
|
||||
|
@ -40,6 +40,7 @@
|
||||
#define SPDK_LOG_H
|
||||
|
||||
#include "spdk/stdinc.h"
|
||||
#include "spdk/queue.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@ -131,6 +132,32 @@ enum spdk_log_level spdk_log_get_print_level(void);
|
||||
spdk_log(SPDK_LOG_ERROR, __FILE__, __LINE__, __func__, __VA_ARGS__)
|
||||
#define SPDK_PRINTF(...) \
|
||||
spdk_log(SPDK_LOG_NOTICE, NULL, -1, NULL, __VA_ARGS__)
|
||||
#define SPDK_INFOLOG(FLAG, ...) \
|
||||
do { \
|
||||
if (spdk_log_get_flag(#FLAG)) { \
|
||||
spdk_log(SPDK_LOG_INFO, __FILE__, __LINE__, __func__, __VA_ARGS__); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#ifdef DEBUG
|
||||
#define SPDK_DEBUGLOG(FLAG, ...) \
|
||||
do { \
|
||||
if (SPDK_DEBUGLOG_FLAG_ENABLED(#FLAG)) { \
|
||||
spdk_log(SPDK_LOG_DEBUG, __FILE__, __LINE__, __func__, __VA_ARGS__); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define SPDK_LOGDUMP(FLAG, LABEL, BUF, LEN) \
|
||||
do { \
|
||||
if (SPDK_DEBUGLOG_FLAG_ENABLED(#FLAG)) { \
|
||||
spdk_log_dump(stderr, (LABEL), (BUF), (LEN)); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#else
|
||||
#define SPDK_DEBUGLOG(...) do { } while (0)
|
||||
#define SPDK_LOGDUMP(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Write messages to the log file. If \c level is set to \c SPDK_LOG_DISABLED,
|
||||
@ -169,6 +196,46 @@ void spdk_vlog(enum spdk_log_level level, const char *file, const int line, cons
|
||||
*/
|
||||
void spdk_log_dump(FILE *fp, const char *label, const void *buf, size_t len);
|
||||
|
||||
struct spdk_log_flag {
|
||||
TAILQ_ENTRY(spdk_log_flag) tailq;
|
||||
const char *name;
|
||||
bool enabled;
|
||||
};
|
||||
|
||||
/**
|
||||
* Register a log flag.
|
||||
*
|
||||
* \param name Name of the log flag.
|
||||
* \param flag Log flag to be added.
|
||||
*/
|
||||
void spdk_log_register_flag(const char *name, struct spdk_log_flag *flag);
|
||||
|
||||
#define SPDK_LOG_REGISTER_COMPONENT(FLAG) \
|
||||
struct spdk_log_flag SPDK_LOG_##FLAG = { \
|
||||
.enabled = false, \
|
||||
.name = #FLAG, \
|
||||
}; \
|
||||
__attribute__((constructor)) static void register_flag_##FLAG(void) \
|
||||
{ \
|
||||
spdk_log_register_flag(#FLAG, &SPDK_LOG_##FLAG); \
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the first registered log flag.
|
||||
*
|
||||
* \return The first registered log flag.
|
||||
*/
|
||||
struct spdk_log_flag *spdk_log_get_first_flag(void);
|
||||
|
||||
/**
|
||||
* Get the next registered log flag.
|
||||
*
|
||||
* \param flag The current log flag.
|
||||
*
|
||||
* \return The next registered log flag.
|
||||
*/
|
||||
struct spdk_log_flag *spdk_log_get_next_flag(struct spdk_log_flag *flag);
|
||||
|
||||
/**
|
||||
* Check whether the log flag exists and is enabled.
|
||||
*
|
||||
|
@ -40,63 +40,10 @@
|
||||
#define SPDK_INTERNAL_LOG_H
|
||||
|
||||
#include "spdk/log.h"
|
||||
#include "spdk/queue.h"
|
||||
|
||||
extern enum spdk_log_level g_spdk_log_level;
|
||||
extern enum spdk_log_level g_spdk_log_print_level;
|
||||
|
||||
struct spdk_log_flag {
|
||||
TAILQ_ENTRY(spdk_log_flag) tailq;
|
||||
const char *name;
|
||||
bool enabled;
|
||||
};
|
||||
|
||||
void spdk_log_register_flag(const char *name, struct spdk_log_flag *flag);
|
||||
|
||||
struct spdk_log_flag *spdk_log_get_first_flag(void);
|
||||
struct spdk_log_flag *spdk_log_get_next_flag(struct spdk_log_flag *flag);
|
||||
|
||||
#define SPDK_LOG_REGISTER_COMPONENT(FLAG) \
|
||||
struct spdk_log_flag SPDK_LOG_##FLAG = { \
|
||||
.enabled = false, \
|
||||
.name = #FLAG, \
|
||||
}; \
|
||||
__attribute__((constructor)) static void register_flag_##FLAG(void) \
|
||||
{ \
|
||||
spdk_log_register_flag(#FLAG, &SPDK_LOG_##FLAG); \
|
||||
}
|
||||
|
||||
#define SPDK_INFOLOG(FLAG, ...) \
|
||||
do { \
|
||||
extern struct spdk_log_flag SPDK_LOG_##FLAG; \
|
||||
if (SPDK_LOG_##FLAG.enabled) { \
|
||||
spdk_log(SPDK_LOG_INFO, __FILE__, __LINE__, __func__, __VA_ARGS__); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#ifdef DEBUG
|
||||
|
||||
#define SPDK_DEBUGLOG(FLAG, ...) \
|
||||
do { \
|
||||
extern struct spdk_log_flag SPDK_LOG_##FLAG; \
|
||||
if (SPDK_LOG_##FLAG.enabled) { \
|
||||
spdk_log(SPDK_LOG_DEBUG, __FILE__, __LINE__, __func__, __VA_ARGS__); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define SPDK_LOGDUMP(FLAG, LABEL, BUF, LEN) \
|
||||
do { \
|
||||
extern struct spdk_log_flag SPDK_LOG_##FLAG; \
|
||||
if ((SPDK_LOG_##FLAG.enabled) && (LEN)) { \
|
||||
spdk_log_dump(stderr, (LABEL), (BUF), (LEN)); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#else
|
||||
#define SPDK_DEBUGLOG(...) do { } while (0)
|
||||
#define SPDK_LOGDUMP(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#define SPDK_ERRLOGDUMP(LABEL, BUF, LEN) \
|
||||
do { \
|
||||
if ((LEN)) { \
|
||||
|
Loading…
x
Reference in New Issue
Block a user