Changeset: 913260853ccb for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=913260853ccb Modified Files: clients/Tests/exports.stable.out gdk/gdk.h gdk/gdk_delta.h gdk/gdk_private.h gdk/gdk_tracer.c gdk/gdk_tracer.h monetdb5/mal/mal_function.c monetdb5/mal/mal_function.h monetdb5/mal/mal_listing.c monetdb5/mal/mal_listing.h Branch: Jun2020 Log Message:
Cleanup of tracer: do more inside function, export less, use lowercase. diffs (truncated from 658 to 300 lines): diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out --- a/clients/Tests/exports.stable.out +++ b/clients/Tests/exports.stable.out @@ -217,7 +217,6 @@ BUN BUNfnd(BAT *b, const void *right); gdk_return BUNinplace(BAT *b, BUN p, const void *right, bool force) __attribute__((__warn_unused_result__)); BAT *COLcopy(BAT *b, int tt, bool writable, role_t role); BAT *COLnew(oid hseq, int tltype, BUN capacity, role_t role) __attribute__((__warn_unused_result__)); -const char *COMPONENT_STR[]; size_t GDK_mem_maxsize; size_t GDK_vm_maxsize; gdk_return GDKanalytical_correlation(BAT *r, BAT *b1, BAT *b2, BAT *s, BAT *e, int tpe); @@ -304,8 +303,7 @@ str GDKstrndup(const char *s, size_t n) void GDKsyserror(_In_z_ _Printf_format_string_ const char *format, ...) __attribute__((__format__(__printf__, 1, 2))); gdk_return GDKtracer_fill_comp_info(BAT *id, BAT *component, BAT *log_level); gdk_return GDKtracer_flush_buffer(void); -char *GDKtracer_get_timestamp(const char *fmt, char *buf, size_t sz); -gdk_return GDKtracer_log(LOG_LEVEL level, const char *fmt, ...) __attribute__((__format__(__printf__, 2, 3))); +gdk_return GDKtracer_log(const char *file, const char *func, int lineno, log_level_t lvl, component_t comp, const char *format, ...) __attribute__((__format__(__printf__, 6, 7))); void GDKtracer_reinit_basic(int sig); gdk_return GDKtracer_reset_adapter(void); gdk_return GDKtracer_reset_component_level(const char *comp); @@ -335,8 +333,6 @@ size_t HEAPmemsize(Heap *h); size_t HEAPvmsize(Heap *h); void IMPSdestroy(BAT *b); lng IMPSimprintsize(BAT *b); -const char *LEVEL_STR[]; -LOG_LEVEL LVL_PER_COMPONENT[]; int MT_check_nr_cores(void); int MT_create_thread(MT_Id *t, void (*function)(void *), void *arg, enum MT_thr_detach d, const char *threadname); void MT_exiting_thread(void); @@ -521,6 +517,7 @@ gdk_return logger_restart(logger *lg); int logger_sequence(logger *lg, int seq, lng *id); gdk_return logger_upgrade_bat(logger *lg, const char *name, char tpe, oid id) __attribute__((__warn_unused_result__)); void logger_with_ids(logger *lg); +log_level_t lvl_per_component[]; void *mdlopen(const char *library, int mode); const char *mercurial_revision(void) __attribute__((__const__)); int mo_add_option(opt **Set, int setlen, opt_kind kind, const char *name, const char *value); @@ -2612,8 +2609,8 @@ str thetajoinRef; str thetaselectRef; str tidRef; str timestampRef; -void traceFunction(COMPONENT comp, MalBlkPtr mb, MalStkPtr stk, int flg); -void traceInstruction(COMPONENT comp, MalBlkPtr mb, MalStkPtr stk, InstrPtr p, int flg); +void traceFunction(component_t comp, MalBlkPtr mb, MalStkPtr stk, int flg); +void traceInstruction(component_t comp, MalBlkPtr mb, MalStkPtr stk, InstrPtr p, int flg); str transactionRef; str transaction_abortRef; str transaction_beginRef; diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -1646,6 +1646,7 @@ gdk_export gdk_return BATorderidx(BAT *b gdk_export gdk_return GDKmergeidx(BAT *b, BAT**a, int n_ar); gdk_export bool BATcheckorderidx(BAT *b); +#include "gdk_tracer.h" #include "gdk_delta.h" #include "gdk_hash.h" #include "gdk_bbp.h" diff --git a/gdk/gdk_delta.h b/gdk/gdk_delta.h --- a/gdk/gdk_delta.h +++ b/gdk/gdk_delta.h @@ -9,8 +9,6 @@ #ifndef _GDK_DELTA_H_ #define _GDK_DELTA_H_ -#include "gdk_tracer.h" - /* * We make sure here that the BUNs section of a BAT at least starts 4 * bytes from the BUN start. This ensures that the first data item of diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h --- a/gdk/gdk_private.h +++ b/gdk/gdk_private.h @@ -19,7 +19,6 @@ #define PERSISTENTIDX 1 #include "gdk_system_private.h" -#include "gdk_tracer.h" enum heaptype { offheap, diff --git a/gdk/gdk_tracer.c b/gdk/gdk_tracer.c --- a/gdk/gdk_tracer.c +++ b/gdk/gdk_tracer.c @@ -29,32 +29,36 @@ MT_Lock lock = MT_LOCK_INITIALIZER("GDKt static char file_name[FILENAME_MAX]; -static ATOMIC_TYPE CUR_ADAPTER = ATOMIC_VAR_INIT(DEFAULT_ADAPTER); +static ATOMIC_TYPE cur_adapter = ATOMIC_VAR_INIT(DEFAULT_ADAPTER); -static LOG_LEVEL CUR_FLUSH_LEVEL = DEFAULT_FLUSH_LEVEL; +static log_level_t cur_flush_level = DEFAULT_FLUSH_LEVEL; #define GENERATE_LOG_LEVEL(COMP) DEFAULT_LOG_LEVEL, -LOG_LEVEL LVL_PER_COMPONENT[] = { +log_level_t lvl_per_component[] = { FOREACH_COMP(GENERATE_LOG_LEVEL) }; -const char *ADAPTER_STR[] = { +static const char *adapter_str[] = { FOREACH_ADPTR(GENERATE_STRING) }; -const char *LAYER_STR[] = { +static const char *layer_str[] = { FOREACH_LAYER(GENERATE_STRING) }; -const char *COMPONENT_STR[] = { +static const char *component_str[] = { FOREACH_COMP(GENERATE_STRING) }; -const char *LEVEL_STR[] = { +static const char *level_str[] = { FOREACH_LEVEL(GENERATE_STRING) }; +#define MXW "20" + +#define TS_SIZE ((size_t) 20) /* buffer size needed for timestamp */ + /* * GDKtracer Stream Macros @@ -68,8 +72,7 @@ const char *LEVEL_STR[] = { "%"MXW"s " \ "%-"MXW"s " \ "%-"MXW"s # "MSG, \ - GDKtracer_get_timestamp("%Y-%m-%d %H:%M:%S", \ - (char[20]){0}, 20), \ + GDKtracer_get_timestamp((char[TS_SIZE]){0}, TS_SIZE), \ __FILE__, \ __func__, \ __LINE__, \ @@ -81,6 +84,18 @@ const char *LEVEL_STR[] = { +static inline char * +GDKtracer_get_timestamp(char *datetime, size_t dtsz) +{ + time_t now = time(NULL); + struct tm tmp; + (void) localtime_r(&now, &tmp); + strftime(datetime, dtsz, "%Y-%m-%d %H:%M:%S", &tmp); + + return datetime; +} + + // When BASIC adapter is active, all the log messages are getting printed to a file. // This function prepares a file in order to write the contents of the buffer when necessary. static gdk_return @@ -114,30 +129,30 @@ static void _GDKtracer_layer_level_helper(int layer, int lvl) { const char *tok = NULL; - LOG_LEVEL level = (LOG_LEVEL) lvl; + log_level_t level = (log_level_t) lvl; for (int i = 0; i < COMPONENTS_COUNT; i++) { if (layer == MDB_ALL) { - if (LVL_PER_COMPONENT[i] != level) - LVL_PER_COMPONENT[i] = level; + if (lvl_per_component[i] != level) + lvl_per_component[i] = level; } else { - tok = COMPONENT_STR[i]; + tok = component_str[i]; switch (layer) { case SQL_ALL: if (strncmp(tok, "SQL_", 4) == 0) - if (LVL_PER_COMPONENT[i] != level) - LVL_PER_COMPONENT[i] = level; + if (lvl_per_component[i] != level) + lvl_per_component[i] = level; break; case MAL_ALL: if (strncmp(tok, "MAL_", 4) == 0) - if (LVL_PER_COMPONENT[i] != level) - LVL_PER_COMPONENT[i] = level; + if (lvl_per_component[i] != level) + lvl_per_component[i] = level; break; case GDK_ALL: if (strncmp(tok, "GDK", 3) == 0) - if (LVL_PER_COMPONENT[i] != level) - LVL_PER_COMPONENT[i] = level; + if (lvl_per_component[i] != level) + lvl_per_component[i] = level; break; default: break; @@ -146,48 +161,48 @@ static void } } -static inline ADAPTER +static inline adapter_t find_adapter(const char *adptr) { if (adptr == NULL) return ADAPTERS_COUNT; for (int i = 0; i < (int) ADAPTERS_COUNT; i++) { - if (strcasecmp(ADAPTER_STR[i], adptr) == 0) { - return (ADAPTER) i; + if (strcasecmp(adapter_str[i], adptr) == 0) { + return (adapter_t) i; } } return ADAPTERS_COUNT; } -static inline LOG_LEVEL +static inline log_level_t find_level(const char *lvl) { if (lvl == NULL) return LOG_LEVELS_COUNT; for (int i = 0; i < (int) LOG_LEVELS_COUNT; i++) { - if (strcasecmp(LEVEL_STR[i] + 2, lvl) == 0) { - return (LOG_LEVEL) i; + if (strcasecmp(level_str[i] + 2, lvl) == 0) { + return (log_level_t) i; } } return LOG_LEVELS_COUNT; } -static inline LAYER +static inline layer_t find_layer(const char *layer) { if (layer == NULL) return LAYERS_COUNT; for (int i = 0; i < (int) LAYERS_COUNT; i++) { - if (strcasecmp(LAYER_STR[i], layer) == 0) { - return (LAYER) i; + if (strcasecmp(layer_str[i], layer) == 0) { + return (layer_t) i; } } return LAYERS_COUNT; } -static inline COMPONENT +static inline component_t find_component(const char *comp) { /* special case for the (currently) three components that end in _ */ @@ -201,8 +216,8 @@ find_component(const char *comp) comp = "check_"; for (int i = 0; i < (int) COMPONENTS_COUNT; i++) { - if (strcasecmp(COMPONENT_STR[i], comp) == 0) { - return (COMPONENT) i; + if (strcasecmp(component_str[i], comp) == 0) { + return (component_t) i; } } return COMPONENTS_COUNT; @@ -215,18 +230,6 @@ find_component(const char *comp) * API CALLS * */ -char * -GDKtracer_get_timestamp(const char *fmt, char *datetime, size_t dtsz) -{ - time_t now = time(NULL); - struct tm tmp; - (void) localtime_r(&now, &tmp); - strftime(datetime, dtsz, fmt, &tmp); - - return datetime; -} - - void GDKtracer_reinit_basic(int sig) { @@ -234,7 +237,7 @@ GDKtracer_reinit_basic(int sig) // GDKtracer needs to reopen the file only in // case the adapter is BASIC - if ((int) ATOMIC_GET(&CUR_ADAPTER) != BASIC) + if ((adapter_t) ATOMIC_GET(&cur_adapter) != BASIC) return; // Make sure that GDKtracer is not trying to flush the buffer @@ -263,8 +266,8 @@ GDKtracer_stop(void) gdk_return _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list