X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=liblttng-ust%2Flttng-filter.c;h=1967d540bd99b4f9f46f8140042d35e004d10667;hb=218deb69baab57ee2f6728eef18e84697f21197b;hp=d52658ae14dd7f4e135a5e6e0df306069bd94f4b;hpb=93c591bb3a90753ce66197f2c1e41c8ef554506f;p=lttng-ust.git diff --git a/liblttng-ust/lttng-filter.c b/liblttng-ust/lttng-filter.c index d52658ae..1967d540 100644 --- a/liblttng-ust/lttng-filter.c +++ b/liblttng-ust/lttng-filter.c @@ -25,7 +25,11 @@ */ #define _LGPL_SOURCE +#include +#include + #include + #include "lttng-filter.h" static const char *opnames[] = { @@ -207,6 +211,9 @@ int apply_field_reloc(struct lttng_event *event, return -EINVAL; nr_fields = desc->nr_fields; for (i = 0; i < nr_fields; i++) { + if (fields[i].u.ext.nofilter) { + continue; + } if (!strcmp(fields[i].name, field_name)) { field = &fields[i]; break; @@ -215,10 +222,13 @@ int apply_field_reloc(struct lttng_event *event, switch (fields[i].type.atype) { case atype_integer: case atype_enum: + case atype_enum_nestable: field_offset += sizeof(int64_t); break; case atype_array: + case atype_array_nestable: case atype_sequence: + case atype_sequence_nestable: field_offset += sizeof(unsigned long); field_offset += sizeof(void *); break; @@ -251,10 +261,13 @@ int apply_field_reloc(struct lttng_event *event, switch (field->type.atype) { case atype_integer: case atype_enum: + case atype_enum_nestable: op->op = FILTER_OP_LOAD_FIELD_REF_S64; break; case atype_array: + case atype_array_nestable: case atype_sequence: + case atype_sequence_nestable: op->op = FILTER_OP_LOAD_FIELD_REF_SEQUENCE; break; case atype_string: @@ -326,12 +339,15 @@ int apply_context_reloc(struct lttng_event *event, switch (ctx_field->event_field.type.atype) { case atype_integer: case atype_enum: + case atype_enum_nestable: op->op = FILTER_OP_GET_CONTEXT_REF_S64; break; /* Sequence and array supported as string */ case atype_string: case atype_array: + case atype_array_nestable: case atype_sequence: + case atype_sequence_nestable: op->op = FILTER_OP_GET_CONTEXT_REF_STRING; break; case atype_float: @@ -434,7 +450,6 @@ int _lttng_filter_event_link_bytecode(struct lttng_event *event, } runtime->p.bc = filter_bytecode; runtime->p.session = event->chan->session; - runtime->p.event = event; runtime->len = filter_bytecode->bc.reloc_offset; /* copy original bytecode */ memcpy(runtime->code, filter_bytecode->bc.data, runtime->len); @@ -553,16 +568,6 @@ int lttng_filter_enabler_attach_bytecode(struct lttng_enabler *enabler, return 0; } -void lttng_free_enabler_filter_bytecode(struct lttng_enabler *enabler) -{ - struct lttng_ust_filter_bytecode_node *filter_bytecode, *tmp; - - cds_list_for_each_entry_safe(filter_bytecode, tmp, - &enabler->filter_bytecode_head, node) { - free(filter_bytecode); - } -} - void lttng_free_event_filter_runtime(struct lttng_event *event) { struct bytecode_runtime *runtime, *tmp;