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:322
 
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