Add a check against excluders
authorJP Ikaheimonen <jp_ikaheimonen@mentor.com>
Thu, 7 Nov 2013 10:22:35 +0000 (12:22 +0200)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 13 Nov 2013 20:24:07 +0000 (15:24 -0500)
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 <jp_ikaheimonen@mentor.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
liblttng-ust/lttng-events.c

index 915cffb744613c2973e599bf8a617673ad732b97..61021f3a696334558654b0990b91415c6aec1670 100644 (file)
@@ -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);
This page took 0.025754 seconds and 4 git commands to generate.