32#error "TASK_DBUG_ON already defined"
37#define TX_FMT "{" SY_FMT_DEF " %" PRIu32 "}"
38#define TX_MEM(x) SY_MEM((x).cfg), (x).pc
46#error "DBGOUT defined"
51#ifndef XCOM_STANDALONE
92 MY_ATTRIBUTE((format(printf, 3, 4)));
97 char xcom_log_buffer[STR_SIZE + 1]; \
98 char *xcom_temp_buf = xcom_log_buffer; \
99 int xcom_log_buffer_size = 0; \
100 xcom_log_buffer[0] = 0
101#define GET_NEW_GOUT \
102 char *xcom_log_buffer = (char *)malloc((STR_SIZE + 1) * sizeof(char)); \
103 char *xcom_temp_buf = xcom_log_buffer; \
104 int xcom_log_buffer_size = 0; \
105 xcom_log_buffer[0] = 0
106#define FREE_GOUT xcom_log_buffer[0] = 0
108 xcom_temp_buf = mystrcat(xcom_temp_buf, &xcom_log_buffer_size, s)
109#define COPY_AND_FREE_GOUT(s) \
115#define ADD_F_GOUT(...) \
117 mystrcat_sprintf(xcom_temp_buf, &xcom_log_buffer_size, __VA_ARGS__)
118#define PRINT_LOUT(level) xcom_log(level, xcom_log_buffer)
119#define PRINT_GOUT xcom_debug("%s", xcom_log_buffer)
120#define RET_GOUT return xcom_log_buffer
122#define G_LOG_LEVEL(level, ...) \
125 ADD_F_GOUT(__VA_ARGS__); \
130#ifndef XCOM_STANDALONE
131#define G_DEBUG_LEVEL(level, ...) \
133 if (IS_XCOM_DEBUG_WITH(level)) { \
134 xcom_debug(__VA_ARGS__); \
138#define G_DEBUG_LEVEL(level, ...) \
140 if (IS_XCOM_DEBUG_WITH(level)) { \
142 ADD_F_GOUT(__VA_ARGS__); \
149#define g_critical(...) G_LOG_LEVEL(XCOM_LOG_FATAL, __VA_ARGS__)
150#define G_ERROR(...) G_LOG_LEVEL(XCOM_LOG_ERROR, __VA_ARGS__)
151#define G_WARNING(...) G_LOG_LEVEL(XCOM_LOG_WARN, __VA_ARGS__)
152#define G_MESSAGE(...) G_LOG_LEVEL(XCOM_LOG_INFO, __VA_ARGS__)
153#define G_INFO(...) G_LOG_LEVEL(XCOM_LOG_INFO, __VA_ARGS__)
154#define G_DEBUG(...) \
155 G_DEBUG_LEVEL(XCOM_DEBUG_BASIC | XCOM_DEBUG_TRACE, __VA_ARGS__)
156#define G_TRACE(...) G_DEBUG_LEVEL(XCOM_DEBUG_TRACE, __VA_ARGS__)
157#define IS_XCOM_DEBUG_WITH(level) xcom_debug_check(level)
160#error "IDENTIFY already defined!"
166#error "DBG_IDENTIFY already defined!"
171#define BIT(n) (1L << n)
220#error "INFO already defined!"
225 ADD_F_GOUT("%f ", task_now()); \
227 PRINT_LOUT(XCOM_LOG_INFO); \
236 if (IS_XCOM_DEBUG_WITH(XCOM_DEBUG_TRACE)) { \
238 ADD_F_GOUT("%f ", task_now()); \
245 long dbg_save = get_dbg(); \
247#define RESTORE_DBG set_dbg(dbg_save)
250#error "IFDBG already defined!"
252#define IFDBG(mask, body) \
254 if (do_dbg(mask)) DBGOUT(body); \
259#error "DBGOUT_ASSERT already defined"
261#define DBGOUT_ASSERT(expr, dbginfo) \
266 PRINT_LOUT(XCOM_LOG_ERROR); \
277#define DBGOUT_ASSERT(expr, dbginfo)
279#define IFDBG(mask, body)
282#include <sys/types.h>
289 if (!pid) pid = getpid();
294static inline char const *
fixpath(
char const *x) {
295 char const *s = strrchr(x,
'\\');
296 return s ? s + 1 : x;
299static inline char const *
fixpath(
char const *x) {
300 char const *s = strrchr(x,
'/');
301 return s ? s + 1 : x;
309 ADD_GOUT(__func__); \
310 ADD_F_GOUT(" pid %d xcom_id %x %s:%d ", xpid(), get_my_xcom_id(), \
311 fixpath(__FILE__), __LINE__)
312#define PTREXP(x) ADD_F_GOUT(#x ": %p ", (void const*)(x))
313#define CONSTPTREXP(x) PTREXP(x)
314#define PPUT(x) ADD_F_GOUT("0x%p ", (void *)(x))
315#define STREXP(x) ADD_F_GOUT(#x ": %s ", x)
316#define STRLIT(x) ADD_GOUT(x)
317#define NPUT(x, f) ADD_F_GOUT("%" #f " ", x)
319 ADD_F_GOUT(#x " = "); \
322 ADD_F_GOUT(#x " = "); \
324#define NPUT64(x) ADD_F_GOUT("%" PRIu64 " ", x)
325#define NEXP(x, f) ADD_F_GOUT(#x ": %" #f " ", x)
326#define NUMEXP(x) NEXP(x, d)
327#define g_strerror strerror
328#define LOUT(pri, x) ADD_F_GOUT(x);
330 ADD_F_GOUT(#exp "={%x %" PRIu64 " %u} ", (exp).group_id, ((exp).msgno), \
332#define TIDCEXP(exp) \
333 ADD_F_GOUT(#exp "={%x %" PRIu64 " %u %u} ", (exp).cfg.group_id, \
334 (exp).cfg.msgno, (exp).cfg.node, (exp).pc)
335#define TIMECEXP(exp) ADD_F_GOUT(#exp "=%f sec ", (exp))
336#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:287
uint32_t get_my_xcom_id()
Definition: xcom_base.cc:442
static long get_dbg()
Definition: gcs_debug.h:202
xcom_debugger xcom_debug
Definition: xcom_interface.cc:102
#define BIT(n)
Definition: gcs_debug.h:171
static char const * fixpath(char const *x)
Definition: gcs_debug.h:299
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:200
xcom_debugger_check xcom_debug_check
Definition: xcom_interface.cc:103
xcom_dbg_type
Definition: gcs_debug.h:173
@ D_TRANSPORT
Definition: gcs_debug.h:178
@ D_PROPOSE
Definition: gcs_debug.h:179
@ D_ALLOC
Definition: gcs_debug.h:186
@ D_STORE
Definition: gcs_debug.h:183
@ D_FSM
Definition: gcs_debug.h:177
@ D_BUG
Definition: gcs_debug.h:190
@ D_DETECT
Definition: gcs_debug.h:185
@ D_DISPATCH
Definition: gcs_debug.h:180
@ D_XDR
Definition: gcs_debug.h:182
@ D_EXEC
Definition: gcs_debug.h:184
@ D_SEMA
Definition: gcs_debug.h:181
@ D_CONS
Definition: gcs_debug.h:189
@ D_BASE
Definition: gcs_debug.h:176
@ D_NONE
Definition: gcs_debug.h:174
@ D_FILEOP
Definition: gcs_debug.h:187
@ D_CACHE
Definition: gcs_debug.h:188
@ D_TASK
Definition: gcs_debug.h:175
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:201
@ DBG_STACK_SIZE
Definition: gcs_debug.h:194
long xcom_debug_mask
Definition: xcom_base.cc:414
static void pop_dbg()
Definition: gcs_debug.h:212
double task_now()
Definition: task.cc:318
static void push_dbg(long x)
Definition: gcs_debug.h:204
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:199
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