Loading include/spdk/log.h +2 −6 Original line number Diff line number Diff line Loading @@ -63,20 +63,16 @@ void spdk_noticelog(const char *file, const int line, const char *func, const char *format, ...) __attribute__((__format__(__printf__, 4, 5))); void spdk_warnlog(const char *file, const int line, const char *func, const char *format, ...) __attribute__((__format__(__printf__, 4, 5))); void spdk_tracelog(const char *file, const int line, const char *func, const char *format, ...) __attribute__((__format__(__printf__, 4, 5))); void spdk_tracelog(const char *flag, const char *file, const int line, const char *func, const char *format, ...) __attribute__((__format__(__printf__, 5, 6))); void spdk_errlog(const char *file, const int line, const char *func, const char *format, ...) __attribute__((__format__(__printf__, 4, 5))); void spdk_trace_dump(const char *label, const uint8_t *buf, size_t len); void spdk_log_register_trace_flag(const char *name, bool *enabled); bool spdk_log_get_trace_flag(const char *flag); int spdk_log_set_trace_flag(const char *flag); int spdk_log_clear_trace_flag(const char *flag); size_t spdk_log_get_num_trace_flags(void); const char *spdk_log_get_trace_flag_name(size_t idx); void spdk_open_log(void); void spdk_close_log(void); Loading include/spdk_internal/log.h +24 −9 Original line number Diff line number Diff line Loading @@ -40,10 +40,25 @@ #define SPDK_INTERNAL_LOG_H #include "spdk/log.h" #include "spdk/queue.h" struct spdk_trace_flag { TAILQ_ENTRY(spdk_trace_flag) tailq; const char *name; bool enabled; }; void spdk_log_register_trace_flag(const char *name, struct spdk_trace_flag *flag); struct spdk_trace_flag *spdk_log_get_first_trace_flag(void); struct spdk_trace_flag *spdk_log_get_next_trace_flag(struct spdk_trace_flag *flag); #ifdef DEBUG #define SPDK_LOG_REGISTER_TRACE_FLAG(str, flag) \ bool flag = false; \ struct spdk_trace_flag flag = { \ .enabled = false, \ .name = str, \ }; \ __attribute__((constructor)) static void register_trace_flag_##flag(void) \ { \ spdk_log_register_trace_flag(str, &flag); \ Loading @@ -51,16 +66,16 @@ __attribute__((constructor)) static void register_trace_flag_##flag(void) \ #define SPDK_TRACELOG(FLAG, ...) \ do { \ extern bool FLAG; \ if (FLAG) { \ spdk_tracelog(__FILE__, __LINE__, __func__, __VA_ARGS__); \ extern struct spdk_trace_flag FLAG; \ if (FLAG.enabled) { \ spdk_tracelog(FLAG.name, __FILE__, __LINE__, __func__, __VA_ARGS__); \ } \ } while (0) #define SPDK_TRACEDUMP(FLAG, LABEL, BUF, LEN) \ do { \ extern bool FLAG; \ if ((FLAG) && (LEN)) { \ extern struct spdk_trace_flag FLAG; \ if ((FLAG.enabled) && (LEN)) { \ spdk_trace_dump((LABEL), (BUF), (LEN)); \ } \ } while (0) Loading lib/log/log.c +36 −59 Original line number Diff line number Diff line Loading @@ -42,13 +42,7 @@ #include <ctype.h> #include <errno.h> struct spdk_trace_flag { const char *name; bool *enabled; }; static size_t g_num_trace_flags = 0; static struct spdk_trace_flag *g_trace_flags = NULL; static TAILQ_HEAD(, spdk_trace_flag) g_trace_flags = TAILQ_HEAD_INITIALIZER(g_trace_flags); unsigned int spdk_g_notice_stderr_flag = 1; unsigned int spdk_g_log_facility = LOG_DAEMON; Loading Loading @@ -171,7 +165,7 @@ spdk_warnlog(const char *file, const int line, const char *func, } void spdk_tracelog(const char *file, const int line, const char *func, spdk_tracelog(const char *flag, const char *file, const int line, const char *func, const char *format, ...) { char buf[MAX_TMPBUF]; Loading @@ -180,11 +174,11 @@ spdk_tracelog(const char *file, const int line, const char *func, va_start(ap, format); vsnprintf(buf, sizeof buf, format, ap); if (func != NULL) { fprintf(stderr, "%s:%4d:%s: %s", file, line, func, buf); //syslog(LOG_INFO, "%s:%4d:%s: %s", file, line, func, buf); fprintf(stderr, "[%s] %s:%4d:%s: %s", flag, file, line, func, buf); //syslog(LOG_INFO, "[%s] %s:%4d:%s: %s", flag, file, line, func, buf); } else { fprintf(stderr, "%s:%4d: %s", file, line, buf); //syslog(LOG_INFO, "%s:%4d: %s", file, line, buf); fprintf(stderr, "[%s] %s:%4d: %s", flag, file, line, buf); //syslog(LOG_INFO, "[%s] %s:%4d: %s", flag, file, line, buf); } va_end(ap); } Loading Loading @@ -254,26 +248,26 @@ spdk_trace_dump(const char *label, const uint8_t *buf, size_t len) fdump(stderr, label, buf, len); } static int compare_trace_flags(const void *key, const void *p) static struct spdk_trace_flag * get_trace_flag(const char *name) { const struct spdk_trace_flag *flag = p; struct spdk_trace_flag *flag; return strcasecmp(key, flag->name); TAILQ_FOREACH(flag, &g_trace_flags, tailq) { if (strcasecmp(name, flag->name) == 0) { return flag; } } static struct spdk_trace_flag * get_trace_flag(const char *name) { return bsearch(name, g_trace_flags, g_num_trace_flags, sizeof(struct spdk_trace_flag), compare_trace_flags); return NULL; } void spdk_log_register_trace_flag(const char *name, bool *enabled) spdk_log_register_trace_flag(const char *name, struct spdk_trace_flag *flag) { struct spdk_trace_flag *flag, *new_flags; struct spdk_trace_flag *iter; if (name == NULL || enabled == NULL) { if (name == NULL || flag == NULL) { fprintf(stderr, "missing spdk_trace_flag parameters\n"); abort(); } Loading @@ -283,27 +277,14 @@ spdk_log_register_trace_flag(const char *name, bool *enabled) abort(); } new_flags = realloc(g_trace_flags, (g_num_trace_flags + 1) * sizeof(struct spdk_trace_flag)); if (new_flags == NULL) { fprintf(stderr, "spdk_trace_flag allocation error\n"); abort(); } g_trace_flags = new_flags; /* Find slot so that new flag is inserted in sorted order */ for (flag = g_trace_flags; flag != g_trace_flags + g_num_trace_flags; flag++) { if (strcasecmp(name, flag->name) < 0) { size_t to_move = g_num_trace_flags - (flag - g_trace_flags); memmove(flag + 1, flag, to_move * sizeof(struct spdk_trace_flag)); break; TAILQ_FOREACH(iter, &g_trace_flags, tailq) { if (strcasecmp(iter->name, flag->name) > 0) { TAILQ_INSERT_BEFORE(iter, flag, tailq); return; } } flag->name = name; flag->enabled = enabled; g_num_trace_flags++; TAILQ_INSERT_TAIL(&g_trace_flags, flag, tailq); } bool Loading @@ -311,7 +292,7 @@ spdk_log_get_trace_flag(const char *name) { struct spdk_trace_flag *flag = get_trace_flag(name); if (flag && *flag->enabled) { if (flag && flag->enabled) { return true; } Loading @@ -322,11 +303,10 @@ static int set_trace_flag(const char *name, bool value) { struct spdk_trace_flag *flag; size_t i; if (strcasecmp(name, "all") == 0) { for (i = 0; i < g_num_trace_flags; i++) { *g_trace_flags[i].enabled = value; TAILQ_FOREACH(flag, &g_trace_flags, tailq) { flag->enabled = value; } return 0; } Loading @@ -336,7 +316,7 @@ set_trace_flag(const char *name, bool value) return -1; } *flag->enabled = value; flag->enabled = value; return 0; } Loading @@ -353,19 +333,16 @@ spdk_log_clear_trace_flag(const char *name) return set_trace_flag(name, false); } size_t spdk_log_get_num_trace_flags(void) struct spdk_trace_flag * spdk_log_get_first_trace_flag(void) { return g_num_trace_flags; return TAILQ_FIRST(&g_trace_flags); } const char *spdk_log_get_trace_flag_name(size_t idx) struct spdk_trace_flag * spdk_log_get_next_trace_flag(struct spdk_trace_flag *flag) { if (idx >= g_num_trace_flags) { return NULL; } return g_trace_flags[idx].name; return TAILQ_NEXT(flag, tailq); } void Loading @@ -388,12 +365,12 @@ void spdk_tracelog_usage(FILE *f, const char *trace_arg) { #ifdef DEBUG size_t i; struct spdk_trace_flag *flag; fprintf(f, " %s flag enable trace flag (all", trace_arg); for (i = 0; i < g_num_trace_flags; i++) { fprintf(f, ", %s", g_trace_flags[i].name); TAILQ_FOREACH(flag, &g_trace_flags, tailq) { fprintf(f, ", %s", flag->name); } fprintf(f, ")\n"); Loading lib/log/rpc/log_rpc.c +6 −7 Original line number Diff line number Diff line Loading @@ -129,7 +129,7 @@ spdk_rpc_get_trace_flags(struct spdk_jsonrpc_server_conn *conn, const struct spdk_json_val *id) { struct spdk_json_write_ctx *w; size_t i, count; struct spdk_trace_flag *flag; if (params != NULL) { spdk_jsonrpc_send_error_response(conn, id, SPDK_JSONRPC_ERROR_INVALID_PARAMS, Loading @@ -141,14 +141,13 @@ spdk_rpc_get_trace_flags(struct spdk_jsonrpc_server_conn *conn, return; } count = spdk_log_get_num_trace_flags(); flag = spdk_log_get_first_trace_flag(); w = spdk_jsonrpc_begin_result(conn, id); spdk_json_write_object_begin(w); for (i = 0; i < count; i++) { const char *name = spdk_log_get_trace_flag_name(i); spdk_json_write_name(w, name); spdk_json_write_bool(w, spdk_log_get_trace_flag(name)); while (flag) { spdk_json_write_name(w, flag->name); spdk_json_write_bool(w, flag->enabled); flag = spdk_log_get_next_trace_flag(flag); } spdk_json_write_object_end(w); spdk_jsonrpc_end_result(conn, w); Loading test/lib/log/log_ut.c +0 −4 Original line number Diff line number Diff line Loading @@ -56,10 +56,6 @@ log_test(void) CU_ASSERT(rc == 0); #ifdef DEBUG rc = spdk_log_get_num_trace_flags(); CU_ASSERT(rc == 1); CU_ASSERT(strcasecmp(spdk_log_get_trace_flag_name(0), "debug") == 0); CU_ASSERT(spdk_log_get_trace_flag("debug") == false); spdk_log_set_trace_flag("debug"); Loading Loading
include/spdk/log.h +2 −6 Original line number Diff line number Diff line Loading @@ -63,20 +63,16 @@ void spdk_noticelog(const char *file, const int line, const char *func, const char *format, ...) __attribute__((__format__(__printf__, 4, 5))); void spdk_warnlog(const char *file, const int line, const char *func, const char *format, ...) __attribute__((__format__(__printf__, 4, 5))); void spdk_tracelog(const char *file, const int line, const char *func, const char *format, ...) __attribute__((__format__(__printf__, 4, 5))); void spdk_tracelog(const char *flag, const char *file, const int line, const char *func, const char *format, ...) __attribute__((__format__(__printf__, 5, 6))); void spdk_errlog(const char *file, const int line, const char *func, const char *format, ...) __attribute__((__format__(__printf__, 4, 5))); void spdk_trace_dump(const char *label, const uint8_t *buf, size_t len); void spdk_log_register_trace_flag(const char *name, bool *enabled); bool spdk_log_get_trace_flag(const char *flag); int spdk_log_set_trace_flag(const char *flag); int spdk_log_clear_trace_flag(const char *flag); size_t spdk_log_get_num_trace_flags(void); const char *spdk_log_get_trace_flag_name(size_t idx); void spdk_open_log(void); void spdk_close_log(void); Loading
include/spdk_internal/log.h +24 −9 Original line number Diff line number Diff line Loading @@ -40,10 +40,25 @@ #define SPDK_INTERNAL_LOG_H #include "spdk/log.h" #include "spdk/queue.h" struct spdk_trace_flag { TAILQ_ENTRY(spdk_trace_flag) tailq; const char *name; bool enabled; }; void spdk_log_register_trace_flag(const char *name, struct spdk_trace_flag *flag); struct spdk_trace_flag *spdk_log_get_first_trace_flag(void); struct spdk_trace_flag *spdk_log_get_next_trace_flag(struct spdk_trace_flag *flag); #ifdef DEBUG #define SPDK_LOG_REGISTER_TRACE_FLAG(str, flag) \ bool flag = false; \ struct spdk_trace_flag flag = { \ .enabled = false, \ .name = str, \ }; \ __attribute__((constructor)) static void register_trace_flag_##flag(void) \ { \ spdk_log_register_trace_flag(str, &flag); \ Loading @@ -51,16 +66,16 @@ __attribute__((constructor)) static void register_trace_flag_##flag(void) \ #define SPDK_TRACELOG(FLAG, ...) \ do { \ extern bool FLAG; \ if (FLAG) { \ spdk_tracelog(__FILE__, __LINE__, __func__, __VA_ARGS__); \ extern struct spdk_trace_flag FLAG; \ if (FLAG.enabled) { \ spdk_tracelog(FLAG.name, __FILE__, __LINE__, __func__, __VA_ARGS__); \ } \ } while (0) #define SPDK_TRACEDUMP(FLAG, LABEL, BUF, LEN) \ do { \ extern bool FLAG; \ if ((FLAG) && (LEN)) { \ extern struct spdk_trace_flag FLAG; \ if ((FLAG.enabled) && (LEN)) { \ spdk_trace_dump((LABEL), (BUF), (LEN)); \ } \ } while (0) Loading
lib/log/log.c +36 −59 Original line number Diff line number Diff line Loading @@ -42,13 +42,7 @@ #include <ctype.h> #include <errno.h> struct spdk_trace_flag { const char *name; bool *enabled; }; static size_t g_num_trace_flags = 0; static struct spdk_trace_flag *g_trace_flags = NULL; static TAILQ_HEAD(, spdk_trace_flag) g_trace_flags = TAILQ_HEAD_INITIALIZER(g_trace_flags); unsigned int spdk_g_notice_stderr_flag = 1; unsigned int spdk_g_log_facility = LOG_DAEMON; Loading Loading @@ -171,7 +165,7 @@ spdk_warnlog(const char *file, const int line, const char *func, } void spdk_tracelog(const char *file, const int line, const char *func, spdk_tracelog(const char *flag, const char *file, const int line, const char *func, const char *format, ...) { char buf[MAX_TMPBUF]; Loading @@ -180,11 +174,11 @@ spdk_tracelog(const char *file, const int line, const char *func, va_start(ap, format); vsnprintf(buf, sizeof buf, format, ap); if (func != NULL) { fprintf(stderr, "%s:%4d:%s: %s", file, line, func, buf); //syslog(LOG_INFO, "%s:%4d:%s: %s", file, line, func, buf); fprintf(stderr, "[%s] %s:%4d:%s: %s", flag, file, line, func, buf); //syslog(LOG_INFO, "[%s] %s:%4d:%s: %s", flag, file, line, func, buf); } else { fprintf(stderr, "%s:%4d: %s", file, line, buf); //syslog(LOG_INFO, "%s:%4d: %s", file, line, buf); fprintf(stderr, "[%s] %s:%4d: %s", flag, file, line, buf); //syslog(LOG_INFO, "[%s] %s:%4d: %s", flag, file, line, buf); } va_end(ap); } Loading Loading @@ -254,26 +248,26 @@ spdk_trace_dump(const char *label, const uint8_t *buf, size_t len) fdump(stderr, label, buf, len); } static int compare_trace_flags(const void *key, const void *p) static struct spdk_trace_flag * get_trace_flag(const char *name) { const struct spdk_trace_flag *flag = p; struct spdk_trace_flag *flag; return strcasecmp(key, flag->name); TAILQ_FOREACH(flag, &g_trace_flags, tailq) { if (strcasecmp(name, flag->name) == 0) { return flag; } } static struct spdk_trace_flag * get_trace_flag(const char *name) { return bsearch(name, g_trace_flags, g_num_trace_flags, sizeof(struct spdk_trace_flag), compare_trace_flags); return NULL; } void spdk_log_register_trace_flag(const char *name, bool *enabled) spdk_log_register_trace_flag(const char *name, struct spdk_trace_flag *flag) { struct spdk_trace_flag *flag, *new_flags; struct spdk_trace_flag *iter; if (name == NULL || enabled == NULL) { if (name == NULL || flag == NULL) { fprintf(stderr, "missing spdk_trace_flag parameters\n"); abort(); } Loading @@ -283,27 +277,14 @@ spdk_log_register_trace_flag(const char *name, bool *enabled) abort(); } new_flags = realloc(g_trace_flags, (g_num_trace_flags + 1) * sizeof(struct spdk_trace_flag)); if (new_flags == NULL) { fprintf(stderr, "spdk_trace_flag allocation error\n"); abort(); } g_trace_flags = new_flags; /* Find slot so that new flag is inserted in sorted order */ for (flag = g_trace_flags; flag != g_trace_flags + g_num_trace_flags; flag++) { if (strcasecmp(name, flag->name) < 0) { size_t to_move = g_num_trace_flags - (flag - g_trace_flags); memmove(flag + 1, flag, to_move * sizeof(struct spdk_trace_flag)); break; TAILQ_FOREACH(iter, &g_trace_flags, tailq) { if (strcasecmp(iter->name, flag->name) > 0) { TAILQ_INSERT_BEFORE(iter, flag, tailq); return; } } flag->name = name; flag->enabled = enabled; g_num_trace_flags++; TAILQ_INSERT_TAIL(&g_trace_flags, flag, tailq); } bool Loading @@ -311,7 +292,7 @@ spdk_log_get_trace_flag(const char *name) { struct spdk_trace_flag *flag = get_trace_flag(name); if (flag && *flag->enabled) { if (flag && flag->enabled) { return true; } Loading @@ -322,11 +303,10 @@ static int set_trace_flag(const char *name, bool value) { struct spdk_trace_flag *flag; size_t i; if (strcasecmp(name, "all") == 0) { for (i = 0; i < g_num_trace_flags; i++) { *g_trace_flags[i].enabled = value; TAILQ_FOREACH(flag, &g_trace_flags, tailq) { flag->enabled = value; } return 0; } Loading @@ -336,7 +316,7 @@ set_trace_flag(const char *name, bool value) return -1; } *flag->enabled = value; flag->enabled = value; return 0; } Loading @@ -353,19 +333,16 @@ spdk_log_clear_trace_flag(const char *name) return set_trace_flag(name, false); } size_t spdk_log_get_num_trace_flags(void) struct spdk_trace_flag * spdk_log_get_first_trace_flag(void) { return g_num_trace_flags; return TAILQ_FIRST(&g_trace_flags); } const char *spdk_log_get_trace_flag_name(size_t idx) struct spdk_trace_flag * spdk_log_get_next_trace_flag(struct spdk_trace_flag *flag) { if (idx >= g_num_trace_flags) { return NULL; } return g_trace_flags[idx].name; return TAILQ_NEXT(flag, tailq); } void Loading @@ -388,12 +365,12 @@ void spdk_tracelog_usage(FILE *f, const char *trace_arg) { #ifdef DEBUG size_t i; struct spdk_trace_flag *flag; fprintf(f, " %s flag enable trace flag (all", trace_arg); for (i = 0; i < g_num_trace_flags; i++) { fprintf(f, ", %s", g_trace_flags[i].name); TAILQ_FOREACH(flag, &g_trace_flags, tailq) { fprintf(f, ", %s", flag->name); } fprintf(f, ")\n"); Loading
lib/log/rpc/log_rpc.c +6 −7 Original line number Diff line number Diff line Loading @@ -129,7 +129,7 @@ spdk_rpc_get_trace_flags(struct spdk_jsonrpc_server_conn *conn, const struct spdk_json_val *id) { struct spdk_json_write_ctx *w; size_t i, count; struct spdk_trace_flag *flag; if (params != NULL) { spdk_jsonrpc_send_error_response(conn, id, SPDK_JSONRPC_ERROR_INVALID_PARAMS, Loading @@ -141,14 +141,13 @@ spdk_rpc_get_trace_flags(struct spdk_jsonrpc_server_conn *conn, return; } count = spdk_log_get_num_trace_flags(); flag = spdk_log_get_first_trace_flag(); w = spdk_jsonrpc_begin_result(conn, id); spdk_json_write_object_begin(w); for (i = 0; i < count; i++) { const char *name = spdk_log_get_trace_flag_name(i); spdk_json_write_name(w, name); spdk_json_write_bool(w, spdk_log_get_trace_flag(name)); while (flag) { spdk_json_write_name(w, flag->name); spdk_json_write_bool(w, flag->enabled); flag = spdk_log_get_next_trace_flag(flag); } spdk_json_write_object_end(w); spdk_jsonrpc_end_result(conn, w); Loading
test/lib/log/log_ut.c +0 −4 Original line number Diff line number Diff line Loading @@ -56,10 +56,6 @@ log_test(void) CU_ASSERT(rc == 0); #ifdef DEBUG rc = spdk_log_get_num_trace_flags(); CU_ASSERT(rc == 1); CU_ASSERT(strcasecmp(spdk_log_get_trace_flag_name(0), "debug") == 0); CU_ASSERT(spdk_log_get_trace_flag("debug") == false); spdk_log_set_trace_flag("debug"); Loading