X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=include%2Flttng%2Ftracepoint.h;h=16348b86106c98e15abe58cf62b8fc11cdc43a4c;hb=c785c634a51956094130218c2bffeff32756cb69;hp=e88db89242750c591909fb56ae912eb6cc670ff3;hpb=aaf93c608bb7591f0a5411c221a3ad3fbd8efdfd;p=lttng-ust.git diff --git a/include/lttng/tracepoint.h b/include/lttng/tracepoint.h index e88db892..16348b86 100644 --- a/include/lttng/tracepoint.h +++ b/include/lttng/tracepoint.h @@ -430,6 +430,50 @@ __tracepoints__ptrs_destroy(void) /* The following declarations must be outside re-inclusion protection. */ +#ifndef TRACEPOINT_ENUM + +/* + * Tracepoint Enumerations + * + * The enumeration is a mapping between an integer, or range of integers, and + * a string. It can be used to have a more compact trace in cases where the + * possible values for a field are limited: + * + * An example: + * + * TRACEPOINT_ENUM(someproject_component, enumname, + * TP_ENUM_VALUES( + * ctf_enum_value("even", 0) + * ctf_enum_value("uneven", 1) + * ctf_enum_range("twoto4", 2, 4) + * ctf_enum_value("five", 5) + * ) + * ) + * + * Where "someproject_component" is the name of the component this enumeration + * belongs to and "enumname" identifies this enumeration. Inside the + * TP_ENUM_VALUES macro is the actual mapping. Each string value can map + * to either a single value with ctf_enum_value or a range of values + * with ctf_enum_range. + * + * Enumeration ranges may overlap, but the behavior is implementation-defined, + * each trace reader will handle overlapping as it wishes. + * + * That enumeration can then be used in a field inside the TP_FIELD macro using + * the following line: + * + * ctf_enum(someproject_component, enumname, enumtype, enumfield, enumval) + * + * Where "someproject_component" and "enumname" match those in the + * TRACEPOINT_ENUM, "enumtype" is a signed or unsigned integer type + * backing the enumeration, "enumfield" is the name of the field and + * "enumval" is the value. + */ + +#define TRACEPOINT_ENUM(provider, name, values) + +#endif /* #ifndef TRACEPOINT_ENUM */ + #ifndef TRACEPOINT_EVENT /* @@ -453,6 +497,9 @@ __tracepoints__ptrs_destroy(void) * * Integer, printed with 0x base 16 * * ctf_integer_hex(unsigned long, field_d, arg1) * + * * Enumeration * + * ctf_enum(someproject_component, enum_name, int, field_e, arg0) + * * * Array Sequence, printed as UTF8-encoded array of bytes * * ctf_array_text(char, field_b, string, FIXED_LEN) * ctf_sequence_text(char, field_c, string, size_t, strlen)