X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=liblttng-ust%2Fust-events-internal.h;h=1d8e914ad2487dc9d56a8c0b1bdd62aa1928e90d;hb=67d4e8f5512220b8a33a058b7133fce7595c4fa2;hp=24393936f2df4b40f4ab48cbd099e28d8612fb2c;hpb=ab249ecfea7ddc352e1fb5c3b97a4f0fbb62f3ca;p=lttng-ust.git diff --git a/liblttng-ust/ust-events-internal.h b/liblttng-ust/ust-events-internal.h index 24393936..1d8e914a 100644 --- a/liblttng-ust/ust-events-internal.h +++ b/liblttng-ust/ust-events-internal.h @@ -46,13 +46,17 @@ struct lttng_event_enabler { struct lttng_event_notifier_enabler { struct lttng_enabler base; - struct cds_list_head node; /* per-app list of event notifier enablers */ + uint64_t error_counter_index; + struct cds_list_head node; /* per-app list of event_notifier enablers */ + struct cds_list_head capture_bytecode_head; struct lttng_event_notifier_group *group; /* weak ref */ uint64_t user_token; /* User-provided token */ + uint64_t num_captures; }; enum lttng_ust_bytecode_node_type { LTTNG_UST_BYTECODE_NODE_TYPE_FILTER, + LTTNG_UST_BYTECODE_NODE_TYPE_CAPTURE, }; struct lttng_ust_bytecode_node { @@ -130,7 +134,7 @@ int lttng_event_enabler_disable(struct lttng_event_enabler *enabler); LTTNG_HIDDEN int lttng_event_enabler_attach_filter_bytecode( struct lttng_event_enabler *enabler, - struct lttng_ust_bytecode_node *bytecode); + struct lttng_ust_bytecode_node **bytecode); /* * Attach an application context to an event enabler. @@ -147,19 +151,20 @@ int lttng_event_enabler_attach_context(struct lttng_event_enabler *enabler, */ LTTNG_HIDDEN int lttng_event_enabler_attach_exclusion(struct lttng_event_enabler *enabler, - struct lttng_ust_excluder_node *excluder); + struct lttng_ust_excluder_node **excluder); /* - * Synchronize bytecodes for the enabler and the event. + * Synchronize bytecodes for the enabler and the instance (event or + * event_notifier). * - * This function goes over all bytecode programs of the event enabler to ensure - * each is linked to the provided event. + * This function goes over all bytecode programs of the enabler (event or + * event_notifier enabler) to ensure each is linked to the provided instance. */ LTTNG_HIDDEN void lttng_enabler_link_bytecode(const struct lttng_event_desc *event_desc, struct lttng_ctx **ctx, - struct cds_list_head *bytecode_runtime_head, - struct lttng_enabler *enabler); + struct cds_list_head *instance_bytecode_runtime_head, + struct cds_list_head *enabler_bytecode_runtime_head); /* * Allocate and initialize a `struct lttng_event_notifier_group` object. @@ -218,6 +223,15 @@ int lttng_event_notifier_enabler_disable( */ LTTNG_HIDDEN int lttng_event_notifier_enabler_attach_filter_bytecode( + struct lttng_event_notifier_enabler *event_notifier_enabler, + struct lttng_ust_bytecode_node **bytecode); + +/* + * Attach capture bytecode program to `struct lttng_event_notifier_enabler` and + * all event_notifiers related to this enabler. + */ +LTTNG_HIDDEN +int lttng_event_notifier_enabler_attach_capture_bytecode( struct lttng_event_notifier_enabler *event_notifier_enabler, struct lttng_ust_bytecode_node *bytecode); @@ -228,7 +242,7 @@ int lttng_event_notifier_enabler_attach_filter_bytecode( LTTNG_HIDDEN int lttng_event_notifier_enabler_attach_exclusion( struct lttng_event_notifier_enabler *event_notifier_enabler, - struct lttng_ust_excluder_node *excluder); + struct lttng_ust_excluder_node **excluder); LTTNG_HIDDEN void lttng_free_event_notifier_filter_runtime( @@ -241,4 +255,9 @@ void lttng_free_event_notifier_filter_runtime( LTTNG_HIDDEN int lttng_fix_pending_event_notifiers(void); +LTTNG_HIDDEN +struct lttng_counter *lttng_ust_counter_create( + const char *counter_transport_name, + size_t number_dimensions, const struct lttng_counter_dimension *dimensions); + #endif /* _LTTNG_UST_EVENTS_INTERNAL_H */