71 #define U_LOG_RAW(...) \
73 u_log(__FILE__, __LINE__, __func__, U_LOGGING_RAW, __VA_ARGS__); \
88 #define U_LOG(level, ...) \
90 u_log(__FILE__, __LINE__, __func__, level, __VA_ARGS__); \
102 #define U_LOG_IFL(level, cond_level, ...) \
104 if (cond_level <= level) { \
105 u_log(__FILE__, __LINE__, __func__, level, __VA_ARGS__); \
119 #define U_LOG_XDEV(level, xdev, ...) \
121 u_log_xdev(__FILE__, __LINE__, __func__, level, xdev, __VA_ARGS__); \
133 #define U_LOG_XDEV_IFL(level, cond_level, xdev, ...) \
135 if (cond_level <= level) { \
136 u_log_xdev(__FILE__, __LINE__, __func__, level, xdev, __VA_ARGS__); \
151 #define U_LOG_IFL_HEX(level, cond_level, data, data_size) \
153 if (cond_level <= level) { \
154 u_log_hex(__FILE__, __LINE__, __func__, level, data, data_size); \
169 #define U_LOG_XDEV_IFL_HEX(level, cond_level, xdev, data, data_size) \
171 if (cond_level <= level) { \
172 u_log_xdev_hex(__FILE__, __LINE__, __func__, level, xdev, data, data_size); \
197 XRT_PRINTF_FORMAT(5, 6);
218 ...) XRT_PRINTF_FORMAT(6, 7);
238 const
size_t data_size);
260 const
size_t data_size);
289 #define U_LOG_T(...) U_LOG_IFL_T(u_log_get_global_level(), __VA_ARGS__)
292 #define U_LOG_D(...) U_LOG_IFL_D(u_log_get_global_level(), __VA_ARGS__)
295 #define U_LOG_I(...) U_LOG_IFL_I(u_log_get_global_level(), __VA_ARGS__)
298 #define U_LOG_W(...) U_LOG_IFL_W(u_log_get_global_level(), __VA_ARGS__)
301 #define U_LOG_E(...) U_LOG_IFL_E(u_log_get_global_level(), __VA_ARGS__)
320 #define U_LOG_IFL_T(cond_level, ...) U_LOG_IFL(U_LOGGING_TRACE, cond_level, __VA_ARGS__)
322 #define U_LOG_IFL_D(cond_level, ...) U_LOG_IFL(U_LOGGING_DEBUG, cond_level, __VA_ARGS__)
324 #define U_LOG_IFL_I(cond_level, ...) U_LOG_IFL(U_LOGGING_INFO, cond_level, __VA_ARGS__)
326 #define U_LOG_IFL_W(cond_level, ...) U_LOG_IFL(U_LOGGING_WARN, cond_level, __VA_ARGS__)
328 #define U_LOG_IFL_E(cond_level, ...) U_LOG_IFL(U_LOGGING_ERROR, cond_level, __VA_ARGS__)
331 #define U_LOG_IFL_T_HEX(cond_level, data, data_size) U_LOG_IFL_HEX(U_LOGGING_TRACE, cond_level, data, data_size)
333 #define U_LOG_IFL_D_HEX(cond_level, data, data_size) U_LOG_IFL_HEX(U_LOGGING_DEBUG, cond_level, data, data_size)
354 #define U_LOG_XDEV_IFL_T(xdev, cond_level, ...) U_LOG_XDEV_IFL(U_LOGGING_TRACE, cond_level, xdev, __VA_ARGS__)
356 #define U_LOG_XDEV_IFL_D(xdev, cond_level, ...) U_LOG_XDEV_IFL(U_LOGGING_DEBUG, cond_level, xdev, __VA_ARGS__)
358 #define U_LOG_XDEV_IFL_I(xdev, cond_level, ...) U_LOG_XDEV_IFL(U_LOGGING_INFO, cond_level, xdev, __VA_ARGS__)
360 #define U_LOG_XDEV_IFL_W(xdev, cond_level, ...) U_LOG_XDEV_IFL(U_LOGGING_WARN, cond_level, xdev, __VA_ARGS__)
362 #define U_LOG_XDEV_IFL_E(xdev, cond_level, ...) U_LOG_XDEV_IFL(U_LOGGING_ERROR, cond_level, xdev, __VA_ARGS__)
365 #define U_LOG_XDEV_IFL_T_HEX(xdev, cond_level, data, data_size) \
366 U_LOG_XDEV_IFL_HEX(U_LOGGING_TRACE, cond_level, xdev, data, data_size)
368 #define U_LOG_XDEV_IFL_D_HEX(xdev, cond_level, data, data_size) \
369 U_LOG_XDEV_IFL_HEX(U_LOGGING_DEBUG, cond_level, xdev, data, data_size)
385 #define U_LOG_XDEV_T(xdev, ...) U_LOG_XDEV(U_LOGGING_TRACE, xdev, __VA_ARGS__)
387 #define U_LOG_XDEV_D(xdev, ...) U_LOG_XDEV(U_LOGGING_DEBUG, xdev, __VA_ARGS__)
389 #define U_LOG_XDEV_I(xdev, ...) U_LOG_XDEV(U_LOGGING_INFO, xdev, __VA_ARGS__)
391 #define U_LOG_XDEV_W(xdev, ...) U_LOG_XDEV(U_LOGGING_WARN, xdev, __VA_ARGS__)
393 #define U_LOG_XDEV_E(xdev, ...) U_LOG_XDEV(U_LOGGING_ERROR, xdev, __VA_ARGS__)
u_logging_level
Logging level enum.
Definition: u_logging.h:40
void u_log(const char *file, int line, const char *func, enum u_logging_level level, const char *format,...) XRT_PRINTF_FORMAT(5
Main non-device-related log implementation function: do not call directly, use a macro that wraps it.
enum u_logging_level u_log_get_global_level(void)
Returns the global logging level, subsystems own logging level take precedence.
Definition: u_logging.c:63
void(* u_log_sink_func_t)(const char *file, int line, const char *func, enum u_logging_level level, const char *format, va_list args, void *data)
Function typedef for setting the logging sink.
Definition: u_logging.h:60
void void void u_log_hex(const char *file, int line, const char *func, enum u_logging_level level, const uint8_t *data, const size_t data_size)
Log implementation for dumping memory buffers as hex: do not call directly, use a macro that wraps it...
Definition: u_logging.c:136
void void u_log_xdev(const char *file, int line, const char *func, enum u_logging_level level, struct xrt_device *xdev, const char *format,...) XRT_PRINTF_FORMAT(6
Main device-related log implementation function: do not call directly, use a macro that wraps it.
void u_log_set_sink(u_log_sink_func_t func, void *data)
Sets the logging sink, log is still passed on to the platform defined output as well as the sink.
Definition: u_logging.c:80
void u_log_xdev_hex(const char *file, int line, const char *func, enum u_logging_level level, struct xrt_device *xdev, const uint8_t *data, const size_t data_size)
Device-related log implementation for dumping memory buffers as hex: do not call directly,...
Definition: u_logging.c:164
@ U_LOGGING_WARN
Warning messages: indicating a potential problem.
Definition: u_logging.h:44
@ U_LOGGING_DEBUG
Debug messages, verbose.
Definition: u_logging.h:42
@ U_LOGGING_TRACE
Trace messages, highly verbose.
Definition: u_logging.h:41
@ U_LOGGING_RAW
Special level for raw printing, prints a new-line.
Definition: u_logging.h:46
@ U_LOGGING_ERROR
Error messages: indicating a problem.
Definition: u_logging.h:45
@ U_LOGGING_INFO
Info messages: not very verbose, not indicating a problem.
Definition: u_logging.h:43
A single HMD or input device.
Definition: xrt_device.h:230
Header holding common defines.