uint64_t user_token;
int has_enablers_without_filter_bytecode;
- /* list of struct lttng_bytecode_runtime, sorted by seqnum */
+ /* list of struct lttng_kernel_bytecode_runtime, sorted by seqnum */
struct list_head filter_bytecode_runtime_head;
enum lttng_kernel_abi_instrumentation instrumentation;
/* Selected by instrumentation */
enum lttng_kernel_bytecode_filter_result result;
};
+struct lttng_interpreter_output;
+
+enum lttng_kernel_bytecode_type {
+ LTTNG_KERNEL_BYTECODE_TYPE_FILTER,
+ LTTNG_KERNEL_BYTECODE_TYPE_CAPTURE,
+};
+
+struct lttng_kernel_bytecode_node {
+ enum lttng_kernel_bytecode_type type;
+ struct list_head node;
+ struct lttng_enabler *enabler;
+ struct {
+ uint32_t len;
+ uint32_t reloc_offset;
+ uint64_t seqnum;
+ char data[];
+ } bc;
+};
+
+struct lttng_kernel_bytecode_runtime {
+ /* Associated bytecode */
+ enum lttng_kernel_bytecode_type type;
+ struct lttng_kernel_bytecode_node *bc;
+ int (*interpreter_func)(struct lttng_kernel_bytecode_runtime *kernel_bytecode,
+ const char *interpreter_stack_data,
+ struct lttng_kernel_probe_ctx *lttng_probe_ctx,
+ void *caller_ctx);
+ int link_failed;
+ struct list_head node; /* list of bytecode runtime in event */
+ struct lttng_kernel_ctx *ctx;
+};
+
/*
* Enabler field, within whatever object is enabling an event. Target of
* backward reference.
struct lttng_kernel_ctx_field {
const struct lttng_kernel_event_field *event_field;
- size_t (*get_size)(void *priv, struct lttng_probe_ctx *probe_ctx,
+ size_t (*get_size)(void *priv, struct lttng_kernel_probe_ctx *probe_ctx,
size_t offset);
- void (*record)(void *priv, struct lttng_probe_ctx *probe_ctx,
+ void (*record)(void *priv, struct lttng_kernel_probe_ctx *probe_ctx,
struct lib_ring_buffer_ctx *ctx,
struct lttng_channel *chan);
- void (*get_value)(void *priv, struct lttng_probe_ctx *probe_ctx,
+ void (*get_value)(void *priv, struct lttng_kernel_probe_ctx *probe_ctx,
struct lttng_ctx_value *value);
void (*destroy)(void *priv);
void *priv;
int lttng_kernel_interpret_event_filter(const struct lttng_kernel_event_common *event,
const char *interpreter_stack_data,
- struct lttng_probe_ctx *probe_ctx,
+ struct lttng_kernel_probe_ctx *probe_ctx,
void *event_filter_ctx);
static inline