Rename lttng_event_rule_tracepoint_(set,get)_pattern to lttng_event_rule_tracepoint_...
[lttng-tools.git] / src / common / event-rule / tracepoint.c
index fbe1fc4bc8e1e7e62fc5534f40d18a47b5e1f61a..691ebdc117928b503ea9c000aa904cc928ee030c 100644 (file)
@@ -15,6 +15,7 @@
 #include <common/runas.h>
 #include <common/hashtable/hashtable.h>
 #include <common/hashtable/utils.h>
+#include <common/string-utils/string-utils.h>
 #include <lttng/event-rule/event-rule-internal.h>
 #include <lttng/event-rule/tracepoint-internal.h>
 #include <lttng/log-level-rule.h>
@@ -284,7 +285,7 @@ static int generate_agent_filter(
        assert(rule);
        assert(_agent_filter);
 
-       status = lttng_event_rule_tracepoint_get_pattern(rule, &pattern);
+       status = lttng_event_rule_tracepoint_get_name_pattern(rule, &pattern);
        if (status != LTTNG_EVENT_RULE_STATUS_OK) {
                ret = -1;
                goto end;
@@ -726,7 +727,7 @@ struct lttng_event_rule *lttng_event_rule_tracepoint_create(
                        destroy_lttng_exclusions_element);
 
        /* Default pattern is '*'. */
-       status = lttng_event_rule_tracepoint_set_pattern(rule, "*");
+       status = lttng_event_rule_tracepoint_set_name_pattern(rule, "*");
        if (status != LTTNG_EVENT_RULE_STATUS_OK) {
                lttng_event_rule_destroy(rule);
                rule = NULL;
@@ -894,7 +895,7 @@ skip_log_level_rule:
                offset += *exclusion_len;
        }
 
-       status = lttng_event_rule_tracepoint_set_pattern(rule, pattern);
+       status = lttng_event_rule_tracepoint_set_name_pattern(rule, pattern);
        if (status != LTTNG_EVENT_RULE_STATUS_OK) {
                ERR("Failed to set event rule tracepoint pattern.");
                ret = -1;
@@ -931,7 +932,7 @@ end:
        return ret;
 }
 
-enum lttng_event_rule_status lttng_event_rule_tracepoint_set_pattern(
+enum lttng_event_rule_status lttng_event_rule_tracepoint_set_name_pattern(
                struct lttng_event_rule *rule, const char *pattern)
 {
        char *pattern_copy = NULL;
@@ -952,6 +953,9 @@ enum lttng_event_rule_status lttng_event_rule_tracepoint_set_pattern(
                goto end;
        }
 
+       /* Normalize the pattern. */
+       strutils_normalize_star_glob_pattern(pattern_copy);
+
        free(tracepoint->pattern);
 
        tracepoint->pattern = pattern_copy;
@@ -960,7 +964,7 @@ end:
        return status;
 }
 
-enum lttng_event_rule_status lttng_event_rule_tracepoint_get_pattern(
+enum lttng_event_rule_status lttng_event_rule_tracepoint_get_name_pattern(
                const struct lttng_event_rule *rule, const char **pattern)
 {
        struct lttng_event_rule_tracepoint *tracepoint;
@@ -1117,6 +1121,27 @@ end:
        return valid;
 }
 
+static bool domain_supports_log_levels(enum lttng_domain_type domain)
+{
+       bool supported;
+
+       switch (domain) {
+       case LTTNG_DOMAIN_KERNEL:
+               supported = false;
+               break;
+       case LTTNG_DOMAIN_UST:
+       case LTTNG_DOMAIN_JUL:
+       case LTTNG_DOMAIN_LOG4J:
+       case LTTNG_DOMAIN_PYTHON:
+               supported = true;
+               break;
+       default:
+               abort();
+       }
+
+       return supported;
+}
+
 enum lttng_event_rule_status lttng_event_rule_tracepoint_set_log_level_rule(
                struct lttng_event_rule *rule,
                const struct lttng_log_level_rule *log_level_rule)
@@ -1133,6 +1158,11 @@ enum lttng_event_rule_status lttng_event_rule_tracepoint_set_log_level_rule(
        tracepoint = container_of(
                        rule, struct lttng_event_rule_tracepoint, parent);
 
+       if (!domain_supports_log_levels(tracepoint->domain)) {
+               status = LTTNG_EVENT_RULE_STATUS_UNSUPPORTED;
+               goto end;
+       }
+
        if (!log_level_rule_valid(log_level_rule, tracepoint->domain)) {
                status = LTTNG_EVENT_RULE_STATUS_INVALID;
                goto end;
This page took 0.025078 seconds and 5 git commands to generate.