From: JP Ikaheimonen Date: Thu, 7 Nov 2013 10:22:32 +0000 (+0200) Subject: Add excluders to enabler structure X-Git-Tag: v2.4.0-rc1~14 X-Git-Url: http://git.liburcu.org/?a=commitdiff_plain;h=0f63324afaf4e4ab34f6e8e4015adf5dd1a8b68e;p=lttng-ust.git Add excluders to enabler structure Define a structure that holds excluders and can be used in lists. Add a list holding these structures to the enabler structure. Initialize and destroy the list when the enabler is initialized and destroyed. Signed-off-by: JP Ikaheimonen Signed-off-by: Mathieu Desnoyers --- diff --git a/include/lttng/ust-events.h b/include/lttng/ust-events.h index c563511d..db8b9dc1 100644 --- a/include/lttng/ust-events.h +++ b/include/lttng/ust-events.h @@ -301,6 +301,8 @@ struct lttng_enabler { /* head list of struct lttng_ust_filter_bytecode_node */ struct cds_list_head filter_bytecode_head; + /* head list of struct lttng_ust_excluder_node */ + struct cds_list_head excluder_head; struct cds_list_head node; /* per-session list of enablers */ struct lttng_ust_event event_param; @@ -342,6 +344,15 @@ struct lttng_ust_filter_bytecode_node { struct lttng_ust_filter_bytecode bc; }; +struct lttng_ust_excluder_node { + struct cds_list_head node; + struct lttng_enabler *enabler; + /* + * struct lttng_ust_event_exclusion had variable sized array, + * must be last field. + */ + struct lttng_ust_event_exclusion excluder; +}; /* * Filter return value masks. */ diff --git a/liblttng-ust/lttng-events.c b/liblttng-ust/lttng-events.c index 26601a67..ad374f3b 100644 --- a/liblttng-ust/lttng-events.c +++ b/liblttng-ust/lttng-events.c @@ -687,6 +687,7 @@ struct lttng_enabler *lttng_enabler_create(enum lttng_enabler_type type, return NULL; enabler->type = type; CDS_INIT_LIST_HEAD(&enabler->filter_bytecode_head); + CDS_INIT_LIST_HEAD(&enabler->excluder_head); memcpy(&enabler->event_param, event_param, sizeof(enabler->event_param)); enabler->chan = chan; @@ -767,6 +768,7 @@ static void lttng_enabler_destroy(struct lttng_enabler *enabler) { struct lttng_ust_filter_bytecode_node *filter_node, *tmp_filter_node; + struct lttng_ust_excluder_node *excluder_node, *tmp_excluder_node; /* Destroy filter bytecode */ cds_list_for_each_entry_safe(filter_node, tmp_filter_node, @@ -774,6 +776,12 @@ void lttng_enabler_destroy(struct lttng_enabler *enabler) free(filter_node); } + /* Destroy excluders */ + cds_list_for_each_entry_safe(excluder_node, tmp_excluder_node, + &enabler->excluder_head, node) { + free(excluder_node); + } + /* Destroy contexts */ lttng_destroy_context(enabler->ctx);