struct parse_event_rule_res res = { 0 };
struct lttng_event_expr *event_expr = NULL;
struct filter_parser_ctx *parser_ctx = NULL;
+ struct lttng_log_level_rule *log_level_rule = NULL;
/* Was the -a/--all flag provided? */
bool all_events = false;
/* Event rule types */
case OPT_FUNCTION:
if (!assign_event_rule_type(&event_rule_type,
- LTTNG_EVENT_RULE_TYPE_KRETPROBE)) {
+ LTTNG_EVENT_RULE_TYPE_KERNEL_FUNCTION)) {
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_KRETPROBE:
- case LTTNG_EVENT_RULE_TYPE_UPROBE:
+ case LTTNG_EVENT_RULE_TYPE_KERNEL_PROBE:
+ case LTTNG_EVENT_RULE_TYPE_KERNEL_FUNCTION:
+ 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.");
}
if (loglevel_only) {
- event_rule_status = lttng_event_rule_tracepoint_set_log_level(
- res.er,
- loglevel);
+ log_level_rule = lttng_log_level_rule_exactly_create(loglevel);
} else {
- event_rule_status = lttng_event_rule_tracepoint_set_log_level_range_lower_bound(
- res.er,
- loglevel);
+ log_level_rule = lttng_log_level_rule_at_least_as_severe_as_create(loglevel);
+ }
+
+ if (log_level_rule == NULL) {
+ ERR("Failed to create log level rule object.");
+ goto error;
}
+ event_rule_status =
+ lttng_event_rule_tracepoint_set_log_level_rule(
+ res.er, log_level_rule);
+
if (event_rule_status != LTTNG_EVENT_RULE_STATUS_OK) {
ERR("Failed to set log level on event fule.");
goto error;
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'.",
strutils_free_null_terminated_array_of_strings(exclusion_list);
lttng_kernel_probe_location_destroy(kernel_probe_location);
lttng_userspace_probe_location_destroy(userspace_probe_location);
+ lttng_log_level_rule_destroy(log_level_rule);
return res;
}
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;
}