Motr  M0
trace.h File Reference
#include <stdarg.h>
#include "lib/types.h"
#include "lib/arith.h"
#include "lib/atomic.h"
#include "lib/time.h"
#include "lib/misc.h"
#include "motr/magic.h"
#include "lib/user_space/trace.h"
Include dependency graph for trace.h:

Go to the source code of this file.

Data Structures

struct  m0_trace_buf_header
 
struct  m0_trace_rec_header
 
struct  m0_trace_descr
 

Macros

#define __MOTR_LIB_TRACE_H__
 
#define M0_LOG(level, ...)   M0_CAT(M0_LOG, M0_COUNT_PARAMS(__VA_ARGS__))(level, __VA_ARGS__)
 
#define M0_ENTRY(...)   M0_LOG(M0_CALL, "> " __VA_ARGS__)
 
#define M0_LEAVE(...)   M0_LOG(M0_CALL, "< " __VA_ARGS__)
 
#define M0_RC_HOOK   (0)
 
#define M0_RC(rc)
 
#define M0_ERR(rc)
 
#define M0_RC_INFO(rc, fmt, ...)
 
#define M0_ERR_INFO(rc, fmt, ...)
 
#define M0_TRACE_SUBSYSTEMS
 
#define M0_TRACE_SUBSYS(name, value)   M0_TRACE_SUBSYS_ ## name = (1UL << value),
 
#define M0_TRACE_POINT(LEVEL, NR, DECL, OFFSET, SIZEOF, ISSTR, HASSTR, FMT, ...)
 
#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_OTHER
 
#define LOG_TYPEOF(a, v)   typeof(a) v
 
#define LOG_OFFSETOF(v)   offsetof(struct t_body, v)
 
#define LOG_SIZEOF(a)   sizeof(a)
 
#define LOG_IS_STR_ARG(a)
 
#define LOG_CHECK(a)
 
#define LOG_GROUP(...)   __VA_ARGS__
 
#define M0_LOG0(level, fmt)   M0_TRACE_POINT(level, 0, { ; }, {}, {}, {}, false, fmt)
 
#define M0_LOG1(level, fmt, a0)
 
#define M0_LOG2(level, fmt, a0, a1)
 
#define M0_LOG3(level, fmt, a0, a1, a2)
 
#define M0_LOG4(level, fmt, a0, a1, a2, a3)
 
#define M0_LOG5(level, fmt, a0, a1, a2, a3, a4)
 
#define M0_LOG6(level, fmt, a0, a1, a2, a3, a4, a5)
 
#define M0_LOG7(level, fmt, a0, a1, a2, a3, a4, a5, a6)
 
#define M0_LOG8(level, fmt, a0, a1, a2, a3, a4, a5, a6, a7)
 
#define M0_LOG9(level, fmt, a0, a1, a2, a3, a4, a5, a6, a7, a8)
 

Enumerations

enum  m0_trace_subsystem { M0_TRACE_SUBSYSTEMS }
 
enum  { M0_TRACE_BUF_HEADER_SIZE = (1 << 16), M0_TRACE_REC_ALIGN = 8 }
 
enum  m0_trace_buf_type { M0_TRACE_BUF_KERNEL = 1, M0_TRACE_BUF_USER = 2 }
 
enum  m0_trace_buf_flags { M0_TRACE_BUF_MKFS = 1 << 0, M0_TRACE_BUF_DIRTY = 1 << 1, M0_TRACE_BUF_FLAGS_MAX }
 
enum  m0_trace_level {
  M0_NONE = 0, M0_ALWAYS = 1 << 0, M0_FATAL = 1 << 1, M0_ERROR = 1 << 2,
  M0_WARN = 1 << 3, M0_NOTICE = 1 << 4, M0_INFO = 1 << 5, M0_DEBUG = 1 << 6,
  M0_CALL = 1 << 7
}
 
enum  m0_trace_print_context {
  M0_TRACE_PCTX_NONE = 0, M0_TRACE_PCTX_FUNC = 1, M0_TRACE_PCTX_SHORT = 2, M0_TRACE_PCTX_FULL = 3,
  M0_TRACE_PCTX_INVALID
}
 
enum  { M0_TRACE_ARGC_MAX = 9 }
 

Functions

static void m0_rc_hook (int rc)
 
static void m0_err_hook (int rc)
 
M0_INTERNAL int m0_trace_init (void)
 
M0_INTERNAL void m0_trace_fini (void)
 
M0_INTERNAL int m0_trace_set_immediate_mask (const char *mask_str)
 
M0_INTERNAL int m0_trace_set_print_context (const char *ctx_name)
 
M0_INTERNAL int m0_trace_set_level (const char *level_str)
 
 M0_BASSERT (M0_TRACE_BUF_FLAGS_MAX< UINT16_MAX)
 
 M0_BASSERT (sizeof(struct m0_trace_buf_header)==M0_TRACE_BUF_HEADER_SIZE)
 
M0_INTERNAL void m0_trace_level_allow (unsigned level)
 
M0_INTERNAL void m0_trace_allot (const struct m0_trace_descr *td, const void *body)
 
M0_INTERNAL void m0_trace_record_print (const struct m0_trace_rec_header *trh, const void *buf)
 
M0_INTERNAL void m0_trace_print_subsystems (void)
 
 __attribute__ ((format(printf, 1, 2))) void m0_console_printf(const char *fmt
 
void m0_console_flush (void)
 
M0_INTERNAL int m0_trace_record_print_yaml (char *outbuf, size_t outbuf_size, const struct m0_trace_rec_header *trh, const void *tr_body, bool yaml_stream_mode)
 

Variables

unsigned long m0_trace_immediate_mask
 
unsigned int m0_trace_print_context
 
unsigned int m0_trace_level
 
struct m0_trace_buf_headerm0_logbuf_header
 
void * m0_logbuf
 

Macro Definition Documentation

◆ __MOTR_LIB_TRACE_H__

#define __MOTR_LIB_TRACE_H__

Definition at line 26 of file trace.h.