aboutsummaryrefslogtreecommitdiff
path: root/reference_model/src/func_debug.h
diff options
context:
space:
mode:
authorEric Kunze <eric.kunze@arm.com>2022-06-22 11:30:23 -0700
committerEric Kunze <eric.kunze@arm.com>2022-08-22 22:59:54 +0000
commit286f834ce60e4ebcaaf131cb7da97ebf79098fa0 (patch)
tree83baf6a241912f980a0b1b311726fb5f7c97ac1e /reference_model/src/func_debug.h
parent3c59d5d2b4c20ec64daff76fd04a374c5a5055e0 (diff)
downloadreference_model-286f834ce60e4ebcaaf131cb7da97ebf79098fa0.tar.gz
Simplify the argument parsing and debug code
Change-Id: Ia681aa0eb1d42fa31a4658badb376f7b32b2e338 Signed-off-by: Eric Kunze <eric.kunze@arm.com>
Diffstat (limited to 'reference_model/src/func_debug.h')
-rw-r--r--reference_model/src/func_debug.h54
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