X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=include%2Flttng%2Ffilter.h;h=26538b5e932957382e3344349ec6f7ade0bddddf;hb=1242217a08db0fb08a4f8f7bb3a94b82647b17e4;hp=e999a0572f2797bcda2eb59a2ef18f6e0cadf085;hpb=5a15f70c5211ff4a398171a6971586e2948eb419;p=lttng-modules.git diff --git a/include/lttng/filter.h b/include/lttng/filter.h index e999a057..26538b5e 100644 --- a/include/lttng/filter.h +++ b/include/lttng/filter.h @@ -47,6 +47,7 @@ struct bytecode_runtime { enum entry_type { REG_S64, + REG_U64, REG_DOUBLE, REG_STRING, REG_STAR_GLOB_STRING, @@ -182,6 +183,7 @@ struct load_ptr { }; struct estack_entry { + enum entry_type type; union { int64_t v; @@ -204,6 +206,9 @@ struct estack { #define estack_ax_v ax #define estack_bx_v bx +#define estack_ax_t ax_t +#define estack_bx_t bx_t + #define estack_ax(stack, top) \ ({ \ BUG_ON((top) <= FILTER_STACK_EMPTY); \ @@ -216,26 +221,30 @@ struct estack { &(stack)->e[(top) - 1]; \ }) -#define estack_push(stack, top, ax, bx) \ +#define estack_push(stack, top, ax, bx, ax_t, bx_t) \ do { \ BUG_ON((top) >= FILTER_STACK_LEN - 1); \ (stack)->e[(top) - 1].u.v = (bx); \ + (stack)->e[(top) - 1].type = (bx_t); \ (bx) = (ax); \ + (bx_t) = (ax_t); \ ++(top); \ } while (0) -#define estack_pop(stack, top, ax, bx) \ +#define estack_pop(stack, top, ax, bx, ax_t, bx_t) \ do { \ BUG_ON((top) <= FILTER_STACK_EMPTY); \ (ax) = (bx); \ + (ax_t) = (bx_t); \ (bx) = (stack)->e[(top) - 2].u.v; \ + (bx_t) = (stack)->e[(top) - 2].type; \ (top)--; \ } while (0) const char *lttng_filter_print_op(enum filter_op op); int lttng_filter_validate_bytecode(struct bytecode_runtime *bytecode); -int lttng_filter_specialize_bytecode(struct lttng_event *event, +int lttng_filter_specialize_bytecode(const struct lttng_event_desc *event_desc, struct bytecode_runtime *bytecode); uint64_t lttng_filter_false(void *filter_data,