X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lttng-events.h;h=52402198b48c4b932de1008a35e15aeaed43d1e5;hb=6a9460a8a07abc6820a9b04a86af2f0a082a8a43;hp=ec23512a18b79806bf11e8390a544bd848a240d6;hpb=b7cdc18250880cc44edeef4a4b42c8ac7a135a6d;p=lttng-modules.git diff --git a/lttng-events.h b/lttng-events.h index ec23512a..52402198 100644 --- a/lttng-events.h +++ b/lttng-events.h @@ -16,10 +16,11 @@ #include #include #include -#include +#include #include #include #include +#include #define lttng_is_signed_type(type) (((type)(-1)) < 0) @@ -35,16 +36,12 @@ struct lib_ring_buffer_config; enum abstract_types { atype_integer, - atype_enum, - atype_array, - atype_sequence, atype_string, - atype_struct, - atype_array_compound, /* Array of compound types. */ - atype_sequence_compound, /* Sequence of compound types. */ - atype_variant, - atype_array_bitfield, - atype_sequence_bitfield, + atype_enum_nestable, + atype_array_nestable, + atype_sequence_nestable, + atype_struct_nestable, + atype_variant_nestable, NR_ABSTRACT_TYPES, }; @@ -77,7 +74,7 @@ struct lttng_enum_entry { _byte_order, _base, _encoding) \ { \ .atype = atype_integer, \ - .u.basic.integer = \ + .u.integer = \ { \ .size = (_size) ? : sizeof(_type) * CHAR_BIT, \ .alignment = (_alignment) ? : lttng_alignof(_type) * CHAR_BIT, \ @@ -97,55 +94,38 @@ struct lttng_integer_type { enum lttng_string_encodings encoding; }; -union _lttng_basic_type { - struct lttng_integer_type integer; - struct { - const struct lttng_enum_desc *desc; /* Enumeration mapping */ - struct lttng_integer_type container_type; - } enumeration; - struct { - enum lttng_string_encodings encoding; - } string; -}; - -struct lttng_basic_type { - enum abstract_types atype; - union { - union _lttng_basic_type basic; - } u; -}; - struct lttng_type { enum abstract_types atype; union { - union _lttng_basic_type basic; + struct lttng_integer_type integer; struct { - struct lttng_basic_type elem_type; - unsigned int length; /* num. elems. */ - unsigned int elem_alignment; /* alignment override */ - } array; + enum lttng_string_encodings encoding; + } string; struct { - struct lttng_basic_type length_type; - struct lttng_basic_type elem_type; - unsigned int elem_alignment; /* alignment override */ - } sequence; + const struct lttng_enum_desc *desc; /* Enumeration mapping */ + const struct lttng_type *container_type; + } enum_nestable; struct { - uint32_t nr_fields; - struct lttng_event_field *fields; /* Array of fields. */ - } _struct; + const struct lttng_type *elem_type; + unsigned int length; /* Num. elems. */ + unsigned int alignment; + } array_nestable; struct { - struct lttng_type *elem_type; - unsigned int length; /* num. elems. */ - } array_compound; + const char *length_name; /* Length field name. */ + const struct lttng_type *elem_type; + unsigned int alignment; /* Alignment before elements. */ + } sequence_nestable; struct { - struct lttng_type *elem_type; - const char *length_name; - } sequence_compound; + unsigned int nr_fields; + const struct lttng_event_field *fields; /* Array of fields. */ + unsigned int alignment; + } struct_nestable; struct { const char *tag_name; - struct lttng_event_field *choices; /* Array of fields. */ - uint32_t nr_choices; - } variant; + const struct lttng_event_field *choices; /* Array of fields. */ + unsigned int nr_choices; + unsigned int alignment; + } variant_nestable; } u; }; @@ -161,7 +141,8 @@ struct lttng_event_field { const char *name; struct lttng_type type; unsigned int nowrite:1, /* do not write into trace */ - user:1; /* fetch from user-space */ + user:1, /* fetch from user-space */ + nofilter:1; /* do not consider for filter */ }; union lttng_ctx_value { @@ -740,9 +721,7 @@ int lttng_add_migratable_to_ctx(struct lttng_ctx **ctx) int lttng_add_callstack_to_ctx(struct lttng_ctx **ctx, int type); -#if defined(CONFIG_CGROUPS) && \ - ((LINUX_VERSION_CODE >= KERNEL_VERSION(4,6,0)) || \ - LTTNG_UBUNTU_KERNEL_RANGE(4,4,0,0, 4,5,0,0)) +#if defined(CONFIG_CGROUPS) int lttng_add_cgroup_ns_to_ctx(struct lttng_ctx **ctx); #else static inline @@ -752,8 +731,7 @@ int lttng_add_cgroup_ns_to_ctx(struct lttng_ctx **ctx) } #endif -#if defined(CONFIG_IPC_NS) && \ - (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) +#if defined(CONFIG_IPC_NS) int lttng_add_ipc_ns_to_ctx(struct lttng_ctx **ctx); #else static inline @@ -763,8 +741,7 @@ int lttng_add_ipc_ns_to_ctx(struct lttng_ctx **ctx) } #endif -#if !defined(LTTNG_MNT_NS_MISSING_HEADER) && \ - (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) +#if !defined(LTTNG_MNT_NS_MISSING_HEADER) int lttng_add_mnt_ns_to_ctx(struct lttng_ctx **ctx); #else static inline @@ -774,8 +751,7 @@ int lttng_add_mnt_ns_to_ctx(struct lttng_ctx **ctx) } #endif -#if defined(CONFIG_NET_NS) && \ - (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) +#if defined(CONFIG_NET_NS) int lttng_add_net_ns_to_ctx(struct lttng_ctx **ctx); #else static inline @@ -785,8 +761,7 @@ int lttng_add_net_ns_to_ctx(struct lttng_ctx **ctx) } #endif -#if defined(CONFIG_PID_NS) && \ - (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) +#if defined(CONFIG_PID_NS) int lttng_add_pid_ns_to_ctx(struct lttng_ctx **ctx); #else static inline @@ -796,8 +771,7 @@ int lttng_add_pid_ns_to_ctx(struct lttng_ctx **ctx) } #endif -#if defined(CONFIG_USER_NS) && \ - (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) +#if defined(CONFIG_USER_NS) int lttng_add_user_ns_to_ctx(struct lttng_ctx **ctx); #else static inline @@ -807,8 +781,7 @@ int lttng_add_user_ns_to_ctx(struct lttng_ctx **ctx) } #endif -#if defined(CONFIG_UTS_NS) && \ - (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) +#if defined(CONFIG_UTS_NS) int lttng_add_uts_ns_to_ctx(struct lttng_ctx **ctx); #else static inline @@ -982,4 +955,20 @@ extern const struct file_operations lttng_syscall_list_fops; #define TRACEPOINT_HAS_DATA_ARG +static inline bool lttng_is_bytewise_integer(const struct lttng_type *type) +{ + if (type->atype != atype_integer) + return false; + switch (type->u.integer.size) { + case 8: /* Fall-through. */ + case 16: /* Fall-through. */ + case 32: /* Fall-through. */ + case 64: + break; + default: + return false; + } + return true; +} + #endif /* _LTTNG_EVENTS_H */