#include <wrapper/types.h>
#include <lttng/kernel-version.h>
#include <lttng/events.h>
+#include <lttng/lttng-bytecode.h>
#include <lttng/tracer.h>
#include <lttng/event-notifier-notification.h>
#include <lttng/abi-old.h>
lttng_enabler_link_bytecode(event->desc,
lttng_static_ctx,
&event->filter_bytecode_runtime_head,
- lttng_event_enabler_as_enabler(event_enabler));
+ <tng_event_enabler_as_enabler(event_enabler)->filter_bytecode_head);
/* TODO: merge event context. */
}
*/
lttng_enabler_link_bytecode(event_notifier->desc,
lttng_static_ctx, &event_notifier->filter_bytecode_runtime_head,
- lttng_event_notifier_enabler_as_enabler(event_notifier_enabler));
+ <tng_event_notifier_enabler_as_enabler(event_notifier_enabler)->filter_bytecode_head);
}
return 0;
}
int lttng_enabler_attach_filter_bytecode(struct lttng_enabler *enabler,
struct lttng_kernel_filter_bytecode __user *bytecode)
{
- struct lttng_filter_bytecode_node *bytecode_node;
+ struct lttng_bytecode_node *bytecode_node;
uint32_t bytecode_len;
int ret;
ret = get_user(bytecode_len, &bytecode->len);
if (ret)
return ret;
- bytecode_node = kzalloc(sizeof(*bytecode_node) + bytecode_len,
+ bytecode_node = lttng_kvzalloc(sizeof(*bytecode_node) + bytecode_len,
GFP_KERNEL);
if (!bytecode_node)
return -ENOMEM;
if (ret)
goto error_free;
+ bytecode_node->type = LTTNG_BYTECODE_NODE_TYPE_FILTER;
bytecode_node->enabler = enabler;
/* Enforce length based on allocated size */
bytecode_node->bc.len = bytecode_len;
return 0;
error_free:
- kfree(bytecode_node);
+ lttng_kvfree(bytecode_node);
return ret;
}
static
void lttng_enabler_destroy(struct lttng_enabler *enabler)
{
- struct lttng_filter_bytecode_node *filter_node, *tmp_filter_node;
+ struct lttng_bytecode_node *filter_node, *tmp_filter_node;
/* Destroy filter bytecode */
list_for_each_entry_safe(filter_node, tmp_filter_node,
&enabler->filter_bytecode_head, node) {
- kfree(filter_node);
+ lttng_kvfree(filter_node);
}
}
/* Enable filters */
list_for_each_entry(runtime,
&event->filter_bytecode_runtime_head, node)
- lttng_filter_sync_state(runtime);
+ lttng_bytecode_filter_sync_state(runtime);
}
}
/* Enable filters */
list_for_each_entry(runtime,
&event_notifier->filter_bytecode_runtime_head, node)
- lttng_filter_sync_state(runtime);
+ lttng_bytecode_filter_sync_state(runtime);
}
}