Namespace 'lttng_alignof' to 'lttng_ust_rb_alignof'
[lttng-ust.git] / include / lttng / ust-events.h
index 58a0baf4a5c92713d4658c58589010c828128f75..7090673dc4f6f846916067a23280f61c7711edd7 100644 (file)
@@ -20,6 +20,7 @@
 #include <errno.h>
 #include <urcu/ref.h>
 #include <pthread.h>
+#include <limits.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -123,8 +124,8 @@ struct lttng_ust_type_integer {
                },                                                      \
                .struct_size = sizeof(struct lttng_ust_type_integer),   \
                .size = sizeof(_type) * CHAR_BIT,                       \
-               .alignment = lttng_alignof(_type) * CHAR_BIT,           \
-               .signedness = lttng_is_signed_type(_type),              \
+               .alignment = lttng_ust_rb_alignof(_type) * CHAR_BIT,    \
+               .signedness = lttng_ust_is_signed_type(_type),          \
                .reverse_byte_order = _byte_order != BYTE_ORDER,        \
                .base = _base,                                          \
        }))
@@ -156,7 +157,7 @@ struct lttng_ust_type_float {
                .exp_dig = sizeof(_type) * CHAR_BIT                     \
                        - lttng_ust_float_mant_dig(_type),              \
                .mant_dig = lttng_ust_float_mant_dig(_type),            \
-               .alignment = lttng_alignof(_type) * CHAR_BIT,           \
+               .alignment = lttng_ust_rb_alignof(_type) * CHAR_BIT,    \
                .reverse_byte_order = BYTE_ORDER != FLOAT_WORD_ORDER,   \
        }))
 
@@ -258,7 +259,8 @@ struct lttng_ust_event_field {
 struct lttng_ust_event_desc {
        uint32_t struct_size;                   /* Size of this structure. */
 
-       const char *name;
+       const char *event_name;
+       struct lttng_ust_probe_desc *probe_desc;
        void (*probe_callback)(void);
        struct lttng_event_ctx *ctx;            /* context */
        struct lttng_ust_event_field **fields;  /* event payload */
@@ -282,7 +284,7 @@ struct lttng_ust_event_desc {
 struct lttng_ust_probe_desc {
        uint32_t struct_size;                   /* Size of this structure. */
 
-       const char *provider;
+       const char *provider_name;
        struct lttng_ust_event_desc **event_desc;
        unsigned int nr_events;
        struct cds_list_head head;              /* chain registered probes */
@@ -296,60 +298,6 @@ struct lttng_ust_probe_desc {
 
 /* Data structures used by the tracer. */
 
-/*
- * Bytecode interpreter return value.
- */
-enum lttng_ust_bytecode_interpreter_ret {
-       LTTNG_UST_BYTECODE_INTERPRETER_ERROR = -1,
-       LTTNG_UST_BYTECODE_INTERPRETER_OK = 0,
-};
-
-struct lttng_interpreter_output;
-struct lttng_ust_bytecode_runtime_private;
-
-enum lttng_ust_bytecode_filter_result {
-       LTTNG_UST_BYTECODE_FILTER_ACCEPT = 0,
-       LTTNG_UST_BYTECODE_FILTER_REJECT = 1,
-};
-
-/*
- * IMPORTANT: this structure is part of the ABI between the probe and
- * UST. Fields need to be only added at the end, never reordered, never
- * removed.
- *
- * The field @struct_size should be used to determine the size of the
- * structure. It should be queried before using additional fields added
- * at the end of the structure.
- */
-struct lttng_ust_bytecode_filter_ctx {
-       uint32_t struct_size;                   /* Size of this structure. */
-
-       enum lttng_ust_bytecode_filter_result result;
-
-       /* End of base ABI. Fields below should be used after checking struct_size. */
-};
-
-/*
- * IMPORTANT: this structure is part of the ABI between the probe and
- * UST. Fields need to be only added at the end, never reordered, never
- * removed.
- *
- * The field @struct_size should be used to determine the size of the
- * structure. It should be queried before using additional fields added
- * at the end of the structure.
- */
-struct lttng_ust_bytecode_runtime {
-       uint32_t struct_size;                   /* Size of this structure. */
-
-       struct lttng_ust_bytecode_runtime_private *priv;
-       int (*interpreter_func)(struct lttng_ust_bytecode_runtime *bytecode_runtime,
-                       const char *interpreter_stack_data,
-                       void *ctx);
-       struct cds_list_head node;      /* list of bytecode runtime in event */
-
-       /* End of base ABI. Fields below should be used after checking struct_size. */
-};
-
 /*
  * lttng_event structure is referred to by the tracing fast path. It
  * must be kept small.
@@ -367,6 +315,14 @@ enum lttng_ust_event_type {
        LTTNG_UST_EVENT_TYPE_NOTIFIER = 1,
 };
 
+/*
+ * Result of the run_filter() callback.
+ */
+enum lttng_ust_event_filter_result {
+       LTTNG_UST_EVENT_FILTER_ACCEPT = 0,
+       LTTNG_UST_EVENT_FILTER_REJECT = 1,
+};
+
 /*
  * IMPORTANT: this structure is part of the ABI between the probe and
  * UST. Fields need to be only added at the end, never reordered, never
@@ -391,9 +347,10 @@ struct lttng_ust_event_common {
        void *child;                                    /* Pointer to child, for inheritance by aggregation. */
 
        int enabled;
-       int has_enablers_without_bytecode;
-       /* list of struct lttng_ust_bytecode_runtime, sorted by seqnum */
-       struct cds_list_head filter_bytecode_runtime_head;
+       int eval_filter;                                /* Need to evaluate filters */
+       int (*run_filter)(struct lttng_ust_event_common *event,
+               const char *stack_data,
+               void *filter_ctx);
 
        /* End of base ABI. Fields below should be used after checking struct_size. */
 };
@@ -426,6 +383,22 @@ struct lttng_ust_event_recorder {
        /* End of base ABI. Fields below should be used after checking struct_size. */
 };
 
+/*
+ * IMPORTANT: this structure is part of the ABI between the probe and
+ * UST. Fields need to be only added at the end, never reordered, never
+ * removed.
+ *
+ * The field @struct_size should be used to determine the size of the
+ * structure. It should be queried before using additional fields added
+ * at the end of the structure.
+ */
+struct lttng_ust_notification_ctx {
+       uint32_t struct_size;           /* Size of this structure. */
+       int eval_capture;               /* Capture evaluation available. */
+
+       /* End of base ABI. Fields below should be used after checking struct_size. */
+};
+
 struct lttng_ust_event_notifier_private;
 
 /*
@@ -448,15 +421,16 @@ struct lttng_ust_event_notifier {
        struct lttng_ust_event_common *parent;          /* Inheritance by aggregation. */
        struct lttng_ust_event_notifier_private *priv;  /* Private event notifier interface */
 
+       int eval_capture;                               /* Need to evaluate capture */
        void (*notification_send)(struct lttng_ust_event_notifier *event_notifier,
-               const char *stack_data);
-       struct cds_list_head capture_bytecode_runtime_head;
+               const char *stack_data,
+               struct lttng_ust_notification_ctx *notif_ctx);
 
        /* End of base ABI. Fields below should be used after checking struct_size. */
 };
 
 struct lttng_ust_lib_ring_buffer_channel;
-struct lttng_ust_channel_ops_private;
+struct lttng_ust_channel_buffer_ops_private;
 
 /*
  * IMPORTANT: this structure is part of the ABI between the probe and
@@ -467,10 +441,10 @@ struct lttng_ust_channel_ops_private;
  * structure. It should be queried before using additional fields added
  * at the end of the structure.
  */
-struct lttng_ust_channel_ops {
+struct lttng_ust_channel_buffer_ops {
        uint32_t struct_size;
 
-       struct lttng_ust_channel_ops_private *priv;     /* Private channel ops interface */
+       struct lttng_ust_channel_buffer_ops_private *priv;      /* Private channel buffer ops interface */
 
        int (*event_reserve)(struct lttng_ust_lib_ring_buffer_ctx *ctx,
                             uint32_t event_id);
@@ -479,6 +453,8 @@ struct lttng_ust_channel_ops {
                        const void *src, size_t len);
        void (*event_strcpy)(struct lttng_ust_lib_ring_buffer_ctx *ctx,
                        const char *src, size_t len);
+       void (*event_pstrcpy_pad)(struct lttng_ust_lib_ring_buffer_ctx *ctx,
+                       const char *src, size_t len);
 
        /* End of base ABI. Fields below should be used after checking struct_size. */
 };
@@ -529,9 +505,7 @@ struct lttng_ust_channel_buffer {
        struct lttng_ust_channel_common *parent;        /* Inheritance by aggregation. */
        struct lttng_ust_channel_buffer_private *priv;  /* Private channel buffer interface */
 
-       struct lttng_ust_channel_ops *ops;
-       struct lttng_ust_lib_ring_buffer_channel *chan; /* Channel buffers */
-       struct lttng_ust_shm_handle *handle;            /* shared-memory handle */
+       struct lttng_ust_channel_buffer_ops *ops;
 
        /* End of base ABI. Fields below should be used after checking struct_size. */
 };
This page took 0.026682 seconds and 4 git commands to generate.