#ifdef DEBUG
#define dbg_printk(fmt, args...) \
- printk(KERN_DEBUG "[debug bytecode in %s:%s@%u] " fmt, \
+ printk(KERN_DEBUG "LTTng: [debug bytecode in %s:%s@%u] " fmt, \
__FILE__, __func__, __LINE__, ## args)
#else
#define dbg_printk(fmt, args...) \
do { \
/* do nothing but check printf format */ \
if (0) \
- printk(KERN_DEBUG "[debug bytecode in %s:%s@%u] " fmt, \
+ printk(KERN_DEBUG "LTTng: [debug bytecode in %s:%s@%u] " fmt, \
__FILE__, __func__, __LINE__, ## args); \
} while (0)
#endif
int vstack_push(struct vstack *stack)
{
if (stack->top >= FILTER_STACK_LEN - 1) {
- printk(KERN_WARNING "Stack full\n");
+ printk(KERN_WARNING "LTTng: filter: Stack full\n");
return -EINVAL;
}
++stack->top;
int vstack_pop(struct vstack *stack)
{
if (unlikely(stack->top < 0)) {
- printk(KERN_WARNING "Stack empty\n");
+ printk(KERN_WARNING "LTTng: filter: Stack empty\n");
return -EINVAL;
}
stack->top--;
};
struct estack_entry {
+ enum entry_type type;
union {
int64_t v;
#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); \
&(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,