Add excluders to enabler structure
[lttng-ust.git] / liblttng-ust / lttng-events.c
index ca8587306c2c37b6c6f93ac7ff7cc39a2bfb13c7..ad374f3bc521b93527eb9550fcca989917beb078 100644 (file)
@@ -45,7 +45,7 @@
 
 #include <usterr-signal-safe.h>
 #include <helper.h>
-#include <ust-ctl.h>
+#include <lttng/ust-ctl.h>
 #include <ust-comm.h>
 #include "error.h"
 #include "compat.h"
@@ -260,7 +260,7 @@ int lttng_session_enable(struct lttng_session *session)
         */
        cds_list_for_each_entry(chan, &session->chan_head, node) {
                const struct lttng_ctx *ctx;
-               const struct lttng_event_field *fields = NULL;
+               const struct lttng_ctx_field *fields = NULL;
                size_t nr_fields = 0;
                uint32_t chan_id;
 
@@ -270,7 +270,7 @@ int lttng_session_enable(struct lttng_session *session)
                ctx = chan->ctx;
                if (ctx) {
                        nr_fields = ctx->nr_fields;
-                       fields = &ctx->fields->event_field;
+                       fields = ctx->fields;
                }
                ret = ustcomm_register_channel(notify_socket,
                        session->objd,
@@ -635,12 +635,9 @@ int lttng_enabler_ref_events(struct lttng_enabler *enabler)
 /*
  * Called at library load: connect the probe on all enablers matching
  * this event.
- * called with session mutex held.
- * TODO: currently, for each desc added, we iterate on all event desc
- * (inefficient). We should create specific code that only target the
- * added desc.
+ * Called with session mutex held.
  */
-int lttng_fix_pending_event_desc(const struct lttng_event_desc *desc)
+int lttng_fix_pending_events(void)
 {
        struct lttng_session *session;
 
@@ -690,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;
@@ -743,6 +741,8 @@ int lttng_attach_context(struct lttng_ust_context *context_param,
                return lttng_add_vpid_to_ctx(ctx);
        case LTTNG_UST_CONTEXT_PROCNAME:
                return lttng_add_procname_to_ctx(ctx);
+       case LTTNG_UST_CONTEXT_IP:
+               return lttng_add_ip_to_ctx(ctx);
        default:
                return -EINVAL;
        }
@@ -768,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,
@@ -775,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);
 
This page took 0.03341 seconds and 4 git commands to generate.