X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=instrumentation%2Fevents%2Flttng-module%2Fprintk.h;h=16949c4d83da54c25cebc73c01fb655c387da558;hb=1b4cbadbff1a2bc47ab7bcc361fb8a72f6f3042c;hp=4c744f998f7115fd02813d887918bb558c96f242;hpb=b87700e318c27267890cbd6fb5e50b687279131b;p=lttng-modules.git diff --git a/instrumentation/events/lttng-module/printk.h b/instrumentation/events/lttng-module/printk.h index 4c744f99..16949c4d 100644 --- a/instrumentation/events/lttng-module/printk.h +++ b/instrumentation/events/lttng-module/printk.h @@ -1,15 +1,33 @@ #undef TRACE_SYSTEM #define TRACE_SYSTEM printk -#if !defined(_TRACE_PRINTK_H) || defined(TRACE_HEADER_MULTI_READ) -#define _TRACE_PRINTK_H +#if !defined(LTTNG_TRACE_PRINTK_H) || defined(TRACE_HEADER_MULTI_READ) +#define LTTNG_TRACE_PRINTK_H -#include +#include "../../../probes/lttng-tracepoint-event.h" #include -#define MSG_TRACE_MAX_LEN 2048 +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)) -TRACE_EVENT_CONDITION(console, +LTTNG_TRACEPOINT_EVENT(console, + TP_PROTO(const char *text, size_t len), + + TP_ARGS(text, len), + + TP_STRUCT__entry( + __dynamic_array_text(char, msg, len) + ), + + TP_fast_assign( + tp_memcpy_dyn(msg, text) + ), + + TP_printk("%s", __get_str(msg)) +) + +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)) + +LTTNG_TRACEPOINT_EVENT_CONDITION(console, TP_PROTO(const char *log_buf, unsigned start, unsigned end, unsigned log_buf_len), @@ -18,47 +36,48 @@ TRACE_EVENT_CONDITION(console, TP_CONDITION(start != end), TP_STRUCT__entry( - __dynamic_array_text(char, msg, - min_t(unsigned, end - start, MSG_TRACE_MAX_LEN) + 1) + __dynamic_array_text(char, msg, end - start) ), TP_fast_assign( - tp_memcpy_dyn(msg, - ({ - char lmsg[MSG_TRACE_MAX_LEN + 1]; - - if ((end - start) > MSG_TRACE_MAX_LEN) - start = end - MSG_TRACE_MAX_LEN; - -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)) - if ((start & (log_buf_len - 1)) > - (end & (log_buf_len - 1))) { - memcpy(lmsg, - log_buf + - (start & (log_buf_len - 1)), - log_buf_len - - (start & (log_buf_len - 1))); - memcpy(lmsg + log_buf_len - - (start & (log_buf_len - 1)), - log_buf, - end & (log_buf_len - 1)); - } else - memcpy(lmsg, - log_buf + - (start & (log_buf_len - 1)), - end - start); -#else - memcpy(lmsg, log_buf + start, end - start); -#endif - lmsg[end - start] = 0; - lmsg; - }) - ) + tp_memcpy_dyn(msg, log_buf + start) ), TP_printk("%s", __get_str(msg)) ) -#endif /* _TRACE_PRINTK_H */ + +#else /* (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)) */ + +LTTNG_TRACEPOINT_EVENT_CONDITION(console, + TP_PROTO(const char *log_buf, unsigned start, unsigned end, + unsigned log_buf_len), + + TP_ARGS(log_buf, start, end, log_buf_len), + + TP_CONDITION(start != end), + + TP_STRUCT__entry( + __dynamic_array_text_2(char, msg, + (start & (log_buf_len - 1)) > (end & (log_buf_len - 1)) + ? log_buf_len - (start & (log_buf_len - 1)) + : end - start, + (start & (log_buf_len - 1)) > (end & (log_buf_len - 1)) + ? end & (log_buf_len - 1) + : 0) + ), + + TP_fast_assign( + tp_memcpy_dyn_2(msg, + log_buf + (start & (log_buf_len - 1)), + log_buf) + ), + + TP_printk("%s", __get_str(msg)) +) + +#endif + +#endif /* LTTNG_TRACE_PRINTK_H */ /* This part must be outside protection */ #include "../../../probes/define_trace.h"