Pre-assign fixed loglevels
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 1 Feb 2012 22:54:50 +0000 (17:54 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 1 Feb 2012 22:54:50 +0000 (17:54 -0500)
Some early LTTng-UST adopters brought to my attention that the way
tracepoint loglevels are currently specified in LTTng-UST might be too
relax for its own good. If each application define their own loglevel
names/values, it will become difficult to use the loglevels to select
"trace verbosity" in a system-wide manner.

Now that I come to think of it, it might make sense to pre-define a set
of supported loglevels, similarly to syslog(3). However, given that
tracing sometimes targets debug levels that are more fine-grained than
in the case of logs, I would propose to split the "debug" loglevel into
sub-categories.

My current thought is to simply just allow these loglevels. I doubt that
letting application developers specify extra loglevels on top of this
would be that useful, and it would certainly be more confusing.

In the list below, lower numbers means "low verbosity", higher numbers
means "high verbosity, debug-style information".

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
include/lttng/tracepoint.h
include/lttng/ust-tracepoint-event.h
tests/demo/ust_tests_demo.h
tests/demo/ust_tests_demo2.h
tests/demo/ust_tests_demo3.h

index 222169732b6ee87f5563f3c8c2a7044464b0f000..9f36d39a65cd676143a773e54edabb43204cf0f3 100644 (file)
@@ -345,54 +345,75 @@ static void __attribute__((destructor)) __tracepoints__destroy(void)
 #ifndef TRACEPOINT_LOGLEVEL
 
 /*
- * Tracepoint Loglevel Declaration Facility
- *
- * This is a place-holder the tracepoint loglevel declaration,
- * overridden by the tracer implementation.
+ * Tracepoint Loglevels
  *
  * Typical use of these loglevels:
  *
- * 1) Declare the mapping between loglevel names and an integer values
- *    within TRACEPOINT_LOGLEVEL_ENUM(), using tp_loglevel() for each
- *    tuple. Do _NOT_ add comma (,) nor semicolon (;) between the
- *    tp_loglevel entries contained within TRACEPOINT_LOGLEVEL_ENUM().
- *    Do _NOT_ add comma (,) nor semicolon (;) after the
- *    TRACEPOINT_LOGLEVEL_ENUM() declaration.  The name should be a
- *    proper C99 identifier.
- *
- *      TRACEPOINT_LOGLEVEL_ENUM(
- *              tp_loglevel( < loglevel_name >, < value > )
- *              tp_loglevel( < loglevel_name >, < value > )
- *              ...
- *      )
- *
- *    e.g.:
- *
- *      TRACEPOINT_LOGLEVEL_ENUM(
- *              tp_loglevel(LOG_EMERG,   0)
- *              tp_loglevel(LOG_ALERT,   1)
- *              tp_loglevel(LOG_CRIT,    2)
- *              tp_loglevel(LOG_ERR,     3)
- *              tp_loglevel(LOG_WARNING, 4)
- *              tp_loglevel(LOG_NOTICE,  5)
- *              tp_loglevel(LOG_INFO,    6)
- *              tp_loglevel(LOG_DEBUG,   7)
- *      )
- *
- * 2) Then, declare tracepoint loglevels for tracepoints. A
- *    TRACEPOINT_EVENT should be declared prior to the the
- *    TRACEPOINT_LOGLEVEL for a given tracepoint name. The first field
- *    is the name of the tracepoint, the second field is the loglevel
- *    name.
+ * The loglevels go from 0 to 15. Higher numbers imply the most
+ * verbosity (higher event throughput expected.
+ *
+ * Loglevels 0 through 6, and loglevel 15, match syslog(3) loglevels
+ * semantic. Loglevels 7 through 14 offer more fine-grained selection of
+ * traced information.
+ *
+ * TRACE_EMERG    0
+ * system is unusable
+ *
+ * TRACE_ALERT    1
+ * action must be taken immediately
+ *
+ * TRACE_CRIT     2
+ * critical conditions
+ *
+ * TRACE_ERR      3
+ * error conditions
+ *
+ * TRACE_WARNING  4
+ * warning conditions
+ *
+ * TRACE_NOTICE   5
+ * normal, but significant, condition
+ *
+ * TRACE_INFO     6
+ * informational message
+ *
+ * TRACE_DEBUG_SYSTEM   7
+ * information has system-level scope
+ *
+ * TRACE_PROCESS  8
+ * information has process-level scope
+ *
+ * TRACE_MODULE   9
+ * information has module (executable/library) scope
+ *
+ * TRACE_UNIT     10
+ * information has compilation unit scope
+ *
+ * TRACE_CLASS    11
+ * information has class-level scope
+ *
+ * TRACE_OBJECT   12
+ * information has object-level scope
+ *
+ * TRACE_FUNCTION 13
+ * information has function-level scope
+ *
+ * TRACE_PRINTF   14
+ * tracepoint_printf message
+ *
+ * TRACE_DEBUG    15
+ * debug-level message
+ *
+ * Declare tracepoint loglevels for tracepoints. A TRACEPOINT_EVENT
+ * should be declared prior to the the TRACEPOINT_LOGLEVEL for a given
+ * tracepoint name. The first field is the name of the tracepoint, the
+ * second field is the loglevel name.
  *
  *      TRACEPOINT_LOGLEVEL(< [com_company_]project[_component] >, < event >,
  *              < loglevel_name >)
  *
- * The TRACEPOINT_PROVIDER must be defined when declaring a
- * TRACEPOINT_LOGLEVEL_ENUM and TRACEPOINT_LOGLEVEL. The tracepoint
- * loglevel enumeration apply to the entire TRACEPOINT_PROVIDER. Only one
- * tracepoint loglevel enumeration should be declared per tracepoint
- * provider.
+ * The TRACEPOINT_PROVIDER must be already declared before declaring a
+ * TRACEPOINT_LOGLEVEL.
  */
 
 #define TRACEPOINT_LOGLEVEL_ENUM(...)
index 58c46d80b90974652ce3eecfc3128b00da418cd8..0bdc35be4f85ce6a7650efcea86745b5768b26cf 100644 (file)
@@ -453,7 +453,22 @@ static const struct tracepoint_loglevel_entry              \
                .value = (_value),                      \
        };
 
-#include TRACEPOINT_INCLUDE
+tp_loglevel(TRACE_EMERG,       0)
+tp_loglevel(TRACE_ALERT,       1)
+tp_loglevel(TRACE_CRIT,                2)
+tp_loglevel(TRACE_ERR,         3)
+tp_loglevel(TRACE_WARNING,     4)
+tp_loglevel(TRACE_NOTICE,      5)
+tp_loglevel(TRACE_INFO,                6)
+tp_loglevel(TRACE_SYSTEM,      7)
+tp_loglevel(TRACE_PROCESS,     8)
+tp_loglevel(TRACE_MODULE,      9)
+tp_loglevel(TRACE_UNIT,                10)
+tp_loglevel(TRACE_CLASS,       11)
+tp_loglevel(TRACE_OBJECT,      12)
+tp_loglevel(TRACE_FUNCTION,    13)
+tp_loglevel(TRACE_PRINTF,      14)
+tp_loglevel(TRACE_DEBUG,       15)
 
 /*
  * Stage 6.2 of tracepoint event generation.
@@ -464,15 +479,27 @@ static const struct tracepoint_loglevel_entry             \
 /* Reset all macros within TRACEPOINT_EVENT */
 #include <lttng/ust-tracepoint-event-reset.h>
 
-#undef TRACEPOINT_LOGLEVEL_ENUM
-#define TRACEPOINT_LOGLEVEL_ENUM(...)  __VA_ARGS__
-
 #undef tp_loglevel
 #define tp_loglevel(_identifier, _value)               \
        &_TP_COMBINE_TOKENS4(__tp_loglevel_entry__, TRACEPOINT_PROVIDER, ___, _identifier),     \
 
 static const struct tracepoint_loglevel_entry *_TP_COMBINE_TOKENS(__tracepoint_loglevel_enum__, TRACEPOINT_PROVIDER)[] = {
-#include TRACEPOINT_INCLUDE
+       tp_loglevel(TRACE_EMERG,        0)
+       tp_loglevel(TRACE_ALERT,        1)
+       tp_loglevel(TRACE_CRIT,         2)
+       tp_loglevel(TRACE_ERR,          3)
+       tp_loglevel(TRACE_WARNING,      4)
+       tp_loglevel(TRACE_NOTICE,       5)
+       tp_loglevel(TRACE_INFO,         6)
+       tp_loglevel(TRACE_SYSTEM,       7)
+       tp_loglevel(TRACE_PROCESS,      8)
+       tp_loglevel(TRACE_MODULE,       9)
+       tp_loglevel(TRACE_UNIT,         10)
+       tp_loglevel(TRACE_CLASS,        11)
+       tp_loglevel(TRACE_OBJECT,       12)
+       tp_loglevel(TRACE_FUNCTION,     13)
+       tp_loglevel(TRACE_PRINTF,       14)
+       tp_loglevel(TRACE_DEBUG,        15)
 };
 
 /*
index 355867d2eb6d1c68fb5ffca6af1a2dd810190cef..7740d98c6f93aa7b684870bbb0552cca472ce883 100644 (file)
@@ -23,19 +23,13 @@ extern "C" {
 
 #include <lttng/tracepoint.h>
 
-TRACEPOINT_LOGLEVEL_ENUM(
-       tp_loglevel(critical, 0)
-       tp_loglevel(warning, 1)
-       tp_loglevel(debug, 2)
-)
-
 TRACEPOINT_EVENT(ust_tests_demo, starting,
        TP_ARGS(int, value),
        TP_FIELDS(
                ctf_integer(int, value, value)
        )
 )
-TRACEPOINT_LOGLEVEL(ust_tests_demo, starting, critical)
+TRACEPOINT_LOGLEVEL(ust_tests_demo, starting, TRACE_CRIT)
 
 TRACEPOINT_EVENT(ust_tests_demo, done,
        TP_ARGS(int, value),
@@ -43,7 +37,7 @@ TRACEPOINT_EVENT(ust_tests_demo, done,
                ctf_integer(int, value, value)
        )
 )
-TRACEPOINT_LOGLEVEL(ust_tests_demo, done, critical)
+TRACEPOINT_LOGLEVEL(ust_tests_demo, done, TRACE_CRIT)
 
 #endif /* _TRACEPOINT_UST_TESTS_DEMO_H */
 
index 3cadfa8c281ee868218c1cc829ff208f4ce52413..a763e028be02d130f6269cf28b32c5ec2cd0fabb 100644 (file)
@@ -23,12 +23,6 @@ extern "C" {
 
 #include <lttng/tracepoint.h>
 
-TRACEPOINT_LOGLEVEL_ENUM(
-       tp_loglevel(other, 0)
-       tp_loglevel(other2, 1)
-       tp_loglevel(other3, 2)
-)
-
 TRACEPOINT_EVENT(ust_tests_demo2, loop,
        TP_ARGS(int, anint, int, netint, long *, values,
                 char *, text, size_t, textlen,
@@ -50,7 +44,7 @@ TRACEPOINT_EVENT(ust_tests_demo2, loop,
                ctf_float(double, doublefield, doublearg)
        )
 )
-TRACEPOINT_LOGLEVEL(ust_tests_demo2, loop, other3)
+TRACEPOINT_LOGLEVEL(ust_tests_demo2, loop, TRACE_WARNING)
 
 #endif /* _TRACEPOINT_UST_TESTS_DEMO2_H */
 
index 71241ec6de90c7bc8a84e85ea206e604a3ce0adf..aaa5a0f8f0df71cd666d1743bed532f6640dc5fa 100644 (file)
@@ -23,19 +23,13 @@ extern "C" {
 
 #include <lttng/tracepoint.h>
 
-TRACEPOINT_LOGLEVEL_ENUM(
-       tp_loglevel(test0, 0)
-       tp_loglevel(test1, 1)
-       tp_loglevel(test2, 2)
-)
-
 TRACEPOINT_EVENT(ust_tests_demo3, done,
        TP_ARGS(int, value),
        TP_FIELDS(
                ctf_integer(int, value, value)
        )
 )
-TRACEPOINT_LOGLEVEL(ust_tests_demo3, done, test1)
+TRACEPOINT_LOGLEVEL(ust_tests_demo3, done, TRACE_WARNING)
 
 #endif /* _TRACEPOINT_UST_TESTS_DEMO3_H */
 
This page took 0.030566 seconds and 4 git commands to generate.