static
struct lttng_event_expr *ir_op_load_expr_to_event_expr(
- const struct ir_load_expression *load_exp, const char *capture_str)
+ const struct ir_load_expression *load_expr,
+ const char *capture_str)
{
char *provider_name = NULL;
struct lttng_event_expr *event_expr = NULL;
- const struct ir_load_expression_op *load_expr_op = load_exp->child;
+ const struct ir_load_expression_op *load_expr_op = load_expr->child;
+ const enum ir_load_expression_type load_expr_child_type =
+ load_expr_op->type;
- switch (load_expr_op->type) {
+ switch (load_expr_child_type) {
case IR_LOAD_EXPRESSION_GET_PAYLOAD_ROOT:
case IR_LOAD_EXPRESSION_GET_CONTEXT_ROOT:
{
field_name = load_expr_op->u.symbol;
assert(field_name);
- event_expr = load_expr_op->type == IR_LOAD_EXPRESSION_GET_PAYLOAD_ROOT ?
+ event_expr = load_expr_child_type == IR_LOAD_EXPRESSION_GET_PAYLOAD_ROOT ?
lttng_event_expr_event_payload_field_create(field_name) :
lttng_event_expr_channel_context_field_create(field_name);
if (!event_expr) {
ERR("Failed to create %s event expression: field name = `%s`.",
- load_expr_op->type == IR_LOAD_EXPRESSION_GET_PAYLOAD_ROOT ?
+ load_expr_child_type == IR_LOAD_EXPRESSION_GET_PAYLOAD_ROOT ?
"payload field" : "channel context",
field_name);
goto error;
break;
case OPT_PROBE:
if (!assign_event_rule_type(&event_rule_type,
- LTTNG_EVENT_RULE_TYPE_KPROBE)) {
+ LTTNG_EVENT_RULE_TYPE_KERNEL_PROBE)) {
goto error;
}
break;
case OPT_USERSPACE_PROBE:
if (!assign_event_rule_type(&event_rule_type,
- LTTNG_EVENT_RULE_TYPE_UPROBE)) {
+ LTTNG_EVENT_RULE_TYPE_USERSPACE_PROBE)) {
goto error;
}
/* Validate event rule type against domain. */
switch (event_rule_type) {
- case LTTNG_EVENT_RULE_TYPE_KPROBE:
+ case LTTNG_EVENT_RULE_TYPE_KERNEL_PROBE:
case LTTNG_EVENT_RULE_TYPE_KRETPROBE:
- case LTTNG_EVENT_RULE_TYPE_UPROBE:
+ case LTTNG_EVENT_RULE_TYPE_USERSPACE_PROBE:
case LTTNG_EVENT_RULE_TYPE_SYSCALL:
if (domain_type != LTTNG_DOMAIN_KERNEL) {
ERR("Event type not available for user-space tracing.");
break;
}
- case LTTNG_EVENT_RULE_TYPE_KPROBE:
+ case LTTNG_EVENT_RULE_TYPE_KERNEL_PROBE:
{
int ret;
enum lttng_event_rule_status event_rule_status;
- res.er = lttng_event_rule_kprobe_create();
- if (!res.er) {
- ERR("Failed to create kprobe event rule.");
- goto error;
- }
ret = parse_kernel_probe_opts(source, &kernel_probe_location);
if (ret) {
goto error;
}
- event_rule_status = lttng_event_rule_kprobe_set_name(res.er, tracepoint_name);
- if (event_rule_status != LTTNG_EVENT_RULE_STATUS_OK) {
- ERR("Failed to set kprobe event rule's name to '%s'.", tracepoint_name);
+ assert(kernel_probe_location);
+ res.er = lttng_event_rule_kernel_probe_create(kernel_probe_location);
+ if (!res.er) {
+ ERR("Failed to create kprobe event rule.");
goto error;
}
- assert(kernel_probe_location);
- event_rule_status = lttng_event_rule_kprobe_set_location(res.er, kernel_probe_location);
+ event_rule_status = lttng_event_rule_kernel_probe_set_event_name(res.er, tracepoint_name);
if (event_rule_status != LTTNG_EVENT_RULE_STATUS_OK) {
- ERR("Failed to set kprobe event rule's location.");
+ ERR("Failed to set kprobe event rule's name to '%s'.", tracepoint_name);
goto error;
}
break;
}
- case LTTNG_EVENT_RULE_TYPE_UPROBE:
+ case LTTNG_EVENT_RULE_TYPE_USERSPACE_PROBE:
{
int ret;
enum lttng_event_rule_status event_rule_status;
goto error;
}
- res.er = lttng_event_rule_uprobe_create();
+ res.er = lttng_event_rule_userspace_probe_create(userspace_probe_location);
if (!res.er) {
ERR("Failed to create userspace probe event rule.");
goto error;
}
- event_rule_status = lttng_event_rule_uprobe_set_location(
- res.er, userspace_probe_location);
- if (event_rule_status != LTTNG_EVENT_RULE_STATUS_OK) {
- ERR("Failed to set user space probe event rule's location.");
- goto error;
- }
-
- event_rule_status = lttng_event_rule_uprobe_set_name(
+ event_rule_status = lttng_event_rule_userspace_probe_set_event_name(
res.er, tracepoint_name);
if (event_rule_status != LTTNG_EVENT_RULE_STATUS_OK) {
ERR("Failed to set user space probe event rule's name to '%s'.",
goto error;
}
- c = lttng_condition_event_rule_create(res.er);
+ c = lttng_condition_on_event_create(res.er);
lttng_event_rule_destroy(res.er);
res.er = NULL;
if (!c) {
assert(expr);
assert(*expr);
- status = lttng_condition_event_rule_append_capture_descriptor(
+ status = lttng_condition_on_event_append_capture_descriptor(
c, *expr);
if (status != LTTNG_CONDITION_STATUS_OK) {
+ if (status == LTTNG_CONDITION_STATUS_UNSUPPORTED) {
+ ERR("The capture feature is unsupported by the event-rule condition type");
+ }
+
goto error;
}