From: JP Ikaheimonen Date: Thu, 7 Nov 2013 10:22:35 +0000 (+0200) Subject: Add a check against excluders X-Git-Tag: v2.4.0-rc1~11 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=ed5b5bbd98b60355e8dec0d1e6507b0c6a132b0a;p=lttng-ust.git Add a check against excluders When matching enablers with events, first check against all excluders of the enabler. If the event matches with any of the excluders, then the event does not match with the enabler. [ Edit by Mathieu Desnoyers: apply coding style changes. ] Signed-off-by: JP Ikaheimonen Signed-off-by: Mathieu Desnoyers --- diff --git a/liblttng-ust/lttng-events.c b/liblttng-ust/lttng-events.c index 915cffb7..61021f3a 100644 --- a/liblttng-ust/lttng-events.c +++ b/liblttng-ust/lttng-events.c @@ -491,6 +491,31 @@ static int lttng_desc_match_enabler(const struct lttng_event_desc *desc, struct lttng_enabler *enabler) { + struct lttng_ust_excluder_node *excluder; + + /* If event matches with an excluder, return 'does not match' */ + cds_list_for_each_entry(excluder, &enabler->excluder_head, node) { + int count; + + for (count = 0; count < excluder->excluder.count; count++) { + int found, len; + char *excluder_name; + + excluder_name = (char *) (excluder->excluder.names) + + count * LTTNG_UST_SYM_NAME_LEN; + len = strnlen(excluder_name, LTTNG_UST_SYM_NAME_LEN); + if (len > 0 && excluder_name[len - 1] == '*') { + found = !strncmp(desc->name, excluder_name, + len - 1); + } else { + found = !strncmp(desc->name, excluder_name, + LTTNG_UST_SYM_NAME_LEN - 1); + } + if (found) { + return 0; + } + } + } switch (enabler->type) { case LTTNG_ENABLER_WILDCARD: return lttng_desc_match_wildcard_enabler(desc, enabler);