diff options
Diffstat (limited to 'reference_model/src/func_debug.h')
-rw-r--r-- | reference_model/src/func_debug.h | 54 |
1 files changed, 21 insertions, 33 deletions
diff --git a/reference_model/src/func_debug.h b/reference_model/src/func_debug.h index f2790a4..ee89935 100644 --- a/reference_model/src/func_debug.h +++ b/reference_model/src/func_debug.h @@ -21,15 +21,12 @@ #include <cinttypes> #include <signal.h> #include <stdio.h> +#include <vector> void func_print_backtrace(FILE* out, int sig = SIGABRT); void func_enable_signal_handlers(); -// Debug content container -#define WARNING_BUFFER_SIZE 16 -#define WARNING_BUFFER_ENTRY_LENGTH 1024 - // STRINGIFY2 is needed expand expression passed to STRINGIFY #define STRINGIFY2(s) #s #define STRINGIFY(s) STRINGIFY2(s) @@ -62,18 +59,26 @@ void func_enable_signal_handlers(); struct func_debug_t { - uint32_t func_debug_verbosity; // What verbosity level is set? (bitmask) - uint64_t func_debug_mask; // Which units have debugging enabled? (bitmask) - uint64_t func_debug_inst_mask; // Which instances have debugging enabled (bitmask) - uint64_t inst_id; // The instance id for multiple model instances - uint32_t func_suppress_arch_error_mask; // Which architecture error should be suppressed? (bitmask) - FILE* func_debug_file; // Output file - uint32_t record_warnings; - char* warning_buffer[WARNING_BUFFER_SIZE]; - uint32_t warning_buffer_head; // next unread message - uint32_t warning_buffer_tail; // next message to write - uint32_t is_gzip; - bool is_output_unbuffered; // should log files be opened with unbuffered I/O. + uint32_t func_debug_verbosity = 0; // What verbosity level is set? (bitmask) + uint64_t func_debug_mask = 0; // Which units have debugging enabled? (bitmask) + uint64_t func_debug_inst_mask = 0; // Which instances have debugging enabled (bitmask) + uint64_t inst_id = 0; // The instance id for multiple model instances + FILE* func_debug_file = stderr; // Output file + bool is_output_unbuffered = false; // should log files be opened with unbuffered I/O. + + int init_debug(uint64_t inst_id); + int fini_debug(); + int set_file(const std::string& filename); + void set_mask(const std::string& str); + void set_mask(const uint64_t mask); + void print_masks(FILE* out); + void set_verbosity(const std::string& str); + void set_verbosity(const uint32_t verb); + void set_inst_mask(const char* mask); + void set_inst_mask(const uint64_t mask); + void set_output_unbuffered(const bool is_unbuffered); + std::string get_debug_mask_help_string(); + std::string get_debug_verbosity_help_string(); }; #ifndef ASSERT @@ -157,11 +162,7 @@ void func_debug_warning( fprintf(stderr, COL_WARN(fmt) "\n", ##__VA_ARGS__); #endif -int func_debug_set_captured_warnings(func_debug_t* func_debug, uint32_t capture); - -int func_debug_has_captured_warning(func_debug_t* func_debug); -int func_debug_get_captured_warning(func_debug_t* func_debug, char* buf_ptr, const uint32_t buf_len); // Is this debug verbosity and unit level enabled? // Provide compiler hints that this is unlikely @@ -240,17 +241,4 @@ int func_debug_get_captured_warning(func_debug_t* func_debug, char* buf_ptr, con #define DEBUG_MED(LEVEL, FMT, ...) DEBUG(DEBUG_VERB_MED, LEVEL, COL_MED(FMT), ##__VA_ARGS__) #define DEBUG_HIGH(LEVEL, FMT, ...) DEBUG(DEBUG_VERB_HIGH, LEVEL, COL_HIGH(FMT), ##__VA_ARGS__) -int func_init_debug(func_debug_t*, uint64_t inst_id); -int func_fini_debug(func_debug_t*); -int func_debug_set_file(func_debug_t*, const char* filename); -void func_debug_set_mask(func_debug_t*, const char* str); -void func_debug_set_mask(func_debug_t*, const uint64_t mask); -void func_debug_print_masks(FILE* out); -void func_debug_set_verbosity(func_debug_t*, const char* str); -void func_debug_set_verbosity(func_debug_t*, const uint32_t verb); -void func_debug_set_suppress_arch_error_mask(func_debug_t*, const uint32_t suppress); -void func_debug_set_inst_mask(func_debug_t*, const char* mask); -void func_debug_set_inst_mask(func_debug_t*, const uint64_t mask); -void func_debug_set_output_unbuffered(func_debug_t*, const bool is_unbuffered); - #endif |