-struct lttng_counter_dimension;
-
-struct lttng_counter_ops {
- struct lib_counter *(*counter_create)(size_t nr_dimensions,
- const struct lttng_counter_dimension *dimensions,
- int64_t global_sum_step,
- int global_counter_fd,
- int nr_counter_cpu_fds,
- const int *counter_cpu_fds,
- bool is_daemon);
- void (*counter_destroy)(struct lib_counter *counter);
- int (*counter_add)(struct lib_counter *counter,
- const size_t *dimension_indexes, int64_t v);
- int (*counter_read)(struct lib_counter *counter,
- const size_t *dimension_indexes, int cpu,
- int64_t *value, bool *overflow, bool *underflow);
- int (*counter_aggregate)(struct lib_counter *counter,
- const size_t *dimension_indexes, int64_t *value,
- bool *overflow, bool *underflow);
- int (*counter_clear)(struct lib_counter *counter, const size_t *dimension_indexes);
+struct lttng_ust_event_notifier_private;
+
+/*
+ * 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.
+ *
+ * struct lttng_ust_event_notifier is the action for sending
+ * notifications. It inherits from struct lttng_ust_event_common
+ * by composition to ensure both parent and child structure are
+ * extensible.
+ *
+ * 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_event_notifier {
+ uint32_t struct_size; /* Size of this structure. */
+
+ 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)(const struct lttng_ust_event_notifier *event_notifier,
+ const char *stack_data,
+ struct lttng_ust_probe_ctx *probe_ctx,
+ struct lttng_ust_notification_ctx *notif_ctx);
+
+ /* End of base ABI. Fields below should be used after checking struct_size. */
+};
+
+struct lttng_ust_ring_buffer_channel;
+struct lttng_ust_channel_buffer_ops_private;
+
+/*
+ * 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_channel_buffer_ops {
+ uint32_t struct_size;
+
+ struct lttng_ust_channel_buffer_ops_private *priv; /* Private channel buffer ops interface */
+
+ int (*event_reserve)(struct lttng_ust_ring_buffer_ctx *ctx);
+ void (*event_commit)(struct lttng_ust_ring_buffer_ctx *ctx);
+ void (*event_write)(struct lttng_ust_ring_buffer_ctx *ctx,
+ const void *src, size_t len, size_t alignment);
+ void (*event_strcpy)(struct lttng_ust_ring_buffer_ctx *ctx,
+ const char *src, size_t len);
+ void (*event_pstrcpy_pad)(struct lttng_ust_ring_buffer_ctx *ctx,
+ const char *src, size_t len);
+
+ /* End of base ABI. Fields below should be used after checking struct_size. */