32#error "TASK_DBUG_ON already defined"
39#define TX_FMT "{" SY_FMT_DEF " %" PRIu32 "}"
40#define TX_MEM(x) SY_MEM((x).cfg), (x).pc
48#error "DBGOUT defined"
53#ifndef XCOM_STANDALONE
94 MY_ATTRIBUTE((
format(printf, 3, 4)));
99 char xcom_log_buffer[STR_SIZE + 1]; \
100 char *xcom_temp_buf = xcom_log_buffer; \
101 int xcom_log_buffer_size = 0; \
102 xcom_log_buffer[0] = 0
103#define GET_NEW_GOUT \
104 char *xcom_log_buffer = (char *)malloc((STR_SIZE + 1) * sizeof(char)); \
105 char *xcom_temp_buf = xcom_log_buffer; \
106 int xcom_log_buffer_size = 0; \
107 xcom_log_buffer[0] = 0
108#define FREE_GOUT xcom_log_buffer[0] = 0
110 xcom_temp_buf = mystrcat(xcom_temp_buf, &xcom_log_buffer_size, s)
111#define COPY_AND_FREE_GOUT(s) \
117#define ADD_F_GOUT(...) \
119 mystrcat_sprintf(xcom_temp_buf, &xcom_log_buffer_size, __VA_ARGS__)
120#define PRINT_LOUT(level) xcom_log(level, xcom_log_buffer)
121#define PRINT_GOUT xcom_debug("%s", xcom_log_buffer)
122#define RET_GOUT return xcom_log_buffer
124#define G_LOG_LEVEL(level, ...) \
127 ADD_F_GOUT(__VA_ARGS__); \
132#ifndef XCOM_STANDALONE
133#define G_DEBUG_LEVEL(level, ...) \
135 if (IS_XCOM_DEBUG_WITH(level)) { \
136 xcom_debug(__VA_ARGS__); \
140#define G_DEBUG_LEVEL(level, ...) \
142 if (IS_XCOM_DEBUG_WITH(level)) { \
144 ADD_F_GOUT(__VA_ARGS__); \
151#define g_critical(...) G_LOG_LEVEL(XCOM_LOG_FATAL, __VA_ARGS__)
152#define G_ERROR(...) G_LOG_LEVEL(XCOM_LOG_ERROR, __VA_ARGS__)
153#define G_WARNING(...) G_LOG_LEVEL(XCOM_LOG_WARN, __VA_ARGS__)
154#define G_MESSAGE(...) G_LOG_LEVEL(XCOM_LOG_INFO, __VA_ARGS__)
155#define G_INFO(...) G_LOG_LEVEL(XCOM_LOG_INFO, __VA_ARGS__)
156#define G_DEBUG(...) \
157 G_DEBUG_LEVEL(XCOM_DEBUG_BASIC | XCOM_DEBUG_TRACE, __VA_ARGS__)
158#define G_TRACE(...) G_DEBUG_LEVEL(XCOM_DEBUG_TRACE, __VA_ARGS__)
159#define IS_XCOM_DEBUG_WITH(level) xcom_debug_check(level)
162#error "IDENTIFY already defined!"
168#error "DBG_IDENTIFY already defined!"
173#define BIT(n) (1L << n)
222#error "INFO already defined!"
227 ADD_F_GOUT("%f ", task_now()); \
229 PRINT_LOUT(XCOM_LOG_INFO); \
238 if (IS_XCOM_DEBUG_WITH(XCOM_DEBUG_TRACE)) { \
240 ADD_F_GOUT("%f ", task_now()); \
247 long dbg_save = get_dbg(); \
249#define RESTORE_DBG set_dbg(dbg_save)
252#error "IFDBG already defined!"
254#define IFDBG(mask, body) \
256 if (do_dbg(mask)) DBGOUT(body); \
261#error "DBGOUT_ASSERT already defined"
263#define DBGOUT_ASSERT(expr, dbginfo) \
268 PRINT_LOUT(XCOM_LOG_ERROR); \
279#define DBGOUT_ASSERT(expr, dbginfo)
281#define IFDBG(mask, body)
284#include <sys/types.h>
291 if (!pid) pid = getpid();
296static inline char const *
fixpath(
char const *x) {
297 char const *s = strrchr(x,
'\\');
298 return s ? s + 1 : x;
301static inline char const *
fixpath(
char const *x) {
302 char const *s = strrchr(x,
'/');
303 return s ? s + 1 : x;
311 ADD_GOUT(__func__); \
312 ADD_F_GOUT(" pid %d xcom_id %x %s:%d ", xpid(), get_my_xcom_id(), \
313 fixpath(__FILE__), __LINE__)
314#define PTREXP(x) ADD_F_GOUT(#x ": %p ", (void const*)(x))
315#define CONSTPTREXP(x) PTREXP(x)
316#define PPUT(x) ADD_F_GOUT("0x%p ", (void *)(x))
317#define STREXP(x) ADD_F_GOUT(#x ": %s ", x)
318#define STRLIT(x) ADD_GOUT(x)
319#define NPUT(x, f) ADD_F_GOUT("%" #f " ", x)
321 ADD_F_GOUT(#x " = "); \
324 ADD_F_GOUT(#x " = "); \
326#define NPUT64(x) ADD_F_GOUT("%" PRIu64 " ", x)
327#define NEXP(x, f) ADD_F_GOUT(#x ": %" #f " ", x)
328#define NUMEXP(x) NEXP(x, d)
329#define g_strerror strerror
330#define LOUT(pri, x) ADD_F_GOUT(x);
332 ADD_F_GOUT(#exp "={%x %" PRIu64 " %u} ", (exp).group_id, ((exp).msgno), \
334#define TIDCEXP(exp) \
335 ADD_F_GOUT(#exp "={%x %" PRIu64 " %u %u} ", (exp).cfg.group_id, \
336 (exp).cfg.msgno, (exp).cfg.node, (exp).pc)
337#define TIMECEXP(exp) ADD_F_GOUT(#exp "=%f sec ", (exp))
338#define BALCEXP(exp) ADD_F_GOUT(#exp "={%d %d} ", (exp).cnt, (exp).node)
#define L
Definition: ctype-tis620.cc:75
static int xpid()
Definition: gcs_debug.h:289
uint32_t get_my_xcom_id()
Definition: xcom_base.cc:442
static long get_dbg()
Definition: gcs_debug.h:204
xcom_debugger xcom_debug
Definition: xcom_interface.cc:102
#define BIT(n)
Definition: gcs_debug.h:173
static char const * fixpath(char const *x)
Definition: gcs_debug.h:301
char * mystrcat_sprintf(char *dest, int *size, const char *format,...)
This function allocates a new string where the format string and optional arguments are rendered to.
Definition: task_debug.cc:78
static void set_dbg(xcom_dbg_type x)
Definition: gcs_debug.h:202
xcom_debugger_check xcom_debug_check
Definition: xcom_interface.cc:103
xcom_dbg_type
Definition: gcs_debug.h:175
@ D_TRANSPORT
Definition: gcs_debug.h:180
@ D_PROPOSE
Definition: gcs_debug.h:181
@ D_ALLOC
Definition: gcs_debug.h:188
@ D_STORE
Definition: gcs_debug.h:185
@ D_FSM
Definition: gcs_debug.h:179
@ D_BUG
Definition: gcs_debug.h:192
@ D_DETECT
Definition: gcs_debug.h:187
@ D_DISPATCH
Definition: gcs_debug.h:182
@ D_XDR
Definition: gcs_debug.h:184
@ D_EXEC
Definition: gcs_debug.h:186
@ D_SEMA
Definition: gcs_debug.h:183
@ D_CONS
Definition: gcs_debug.h:191
@ D_BASE
Definition: gcs_debug.h:178
@ D_NONE
Definition: gcs_debug.h:176
@ D_FILEOP
Definition: gcs_debug.h:189
@ D_CACHE
Definition: gcs_debug.h:190
@ D_TASK
Definition: gcs_debug.h:177
int64_t xcom_debug_options
Define the set of debug and trace options that are enabled if there is no debugger check injected.
Definition: xcom_interface.cc:104
char * mystrcat(char *dest, int *size, const char *src)
Concatenates two strings and returns pointer to last character of final string, allowing further conc...
Definition: task_debug.cc:38
long xcom_dbg_stack[DBG_STACK_SIZE]
Definition: xcom_base.cc:416
int xcom_dbg_stack_top
Definition: xcom_base.cc:417
static void unset_dbg(xcom_dbg_type x)
Definition: gcs_debug.h:203
@ DBG_STACK_SIZE
Definition: gcs_debug.h:196
long xcom_debug_mask
Definition: xcom_base.cc:414
static void pop_dbg()
Definition: gcs_debug.h:214
double task_now()
Definition: task.cc:322
static void push_dbg(long x)
Definition: gcs_debug.h:206
xcom_logger xcom_log
Callbacks used in the logging macros.
Definition: xcom_interface.cc:101
static int do_dbg(xcom_dbg_type x)
Definition: gcs_debug.h:201
Header for compiler-dependent features.
size_t size(const char *const c)
Definition: base64.h:46
int(* xcom_debugger_check)(const int64_t debug_options)
Definition: xcom_logger.h:79
void(* xcom_debugger)(const char *format,...)
Definition: xcom_logger.h:77
void(* xcom_logger)(const int64_t level, const char *message)
Definition: xcom_logger.h:76