#include <linux/kernel.h>
#include <lttng/events.h>
+#include <lttng/events-internal.h>
#include <lttng/bytecode.h>
/* Interpreter stack length, in number of entries */
} while (0)
#endif
-/* Linked bytecode. Child of struct lttng_bytecode_runtime. */
+/* Linked bytecode. Child of struct lttng_kernel_bytecode_runtime. */
struct bytecode_runtime {
- struct lttng_bytecode_runtime p;
+ struct lttng_kernel_bytecode_runtime p;
size_t data_len;
size_t data_alloc_len;
char *data;
size_t len;
enum object_type type;
bool rev_bo; /* reverse byte order */
+ bool user; /* from userspace */
} elem;
};
enum object_type object_type;
const struct lttng_kernel_event_field *field;
bool rev_bo; /* reverse byte order */
+ bool user; /* from userspace */
};
struct vstack_entry {
const void *ptr;
size_t nr_elem;
bool rev_bo;
+ bool user; /* from userspace */
/* Temporary place-holders for contexts. */
union {
int64_t s64;
const char __user *user_str;
size_t seq_len;
enum estack_string_literal_type literal_type;
- int user; /* is string from userspace ? */
+ bool user; /* is string from userspace ? */
} s;
struct load_ptr ptr;
} u;
struct {
const char *str;
+ const char __user *user_str;
size_t len;
+ bool user; /* is string from userspace ? */
} str;
struct {
const void *ptr;
const char *lttng_bytecode_print_op(enum bytecode_op op);
-void lttng_bytecode_filter_sync_state(struct lttng_bytecode_runtime *runtime);
-void lttng_bytecode_capture_sync_state(struct lttng_bytecode_runtime *runtime);
+void lttng_bytecode_sync_state(struct lttng_kernel_bytecode_runtime *runtime);
int lttng_bytecode_validate(struct bytecode_runtime *bytecode);
+int lttng_bytecode_validate_load(struct bytecode_runtime *bytecode);
int lttng_bytecode_specialize(const struct lttng_kernel_event_desc *event_desc,
struct bytecode_runtime *bytecode);
-uint64_t lttng_bytecode_filter_interpret_false(void *filter_data,
- struct lttng_probe_ctx *lttng_probe_ctx,
- const char *filter_stack_data);
-uint64_t lttng_bytecode_filter_interpret(void *filter_data,
- struct lttng_probe_ctx *lttng_probe_ctx,
- const char *filter_stack_data);
-
-uint64_t lttng_bytecode_capture_interpret_false(void *capture_data,
- const char *capture_stack_data,
- struct lttng_probe_ctx *lttng_probe_ctx,
- struct lttng_interpreter_output *output);
-uint64_t lttng_bytecode_capture_interpret(void *capture_data,
- const char *capture_stack_data,
- struct lttng_probe_ctx *lttng_probe_ctx,
- struct lttng_interpreter_output *output);
+int lttng_bytecode_interpret_error(struct lttng_kernel_bytecode_runtime *bytecode_runtime,
+ const char *stack_data,
+ struct lttng_kernel_probe_ctx *probe_ctx,
+ void *ctx);
+
+int lttng_bytecode_interpret(struct lttng_kernel_bytecode_runtime *kernel_bytecode,
+ const char *interpreter_stack_data,
+ struct lttng_kernel_probe_ctx *lttng_probe_ctx,
+ void *caller_ctx);
#endif /* _LTTNG_FILTER_H */