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.

Signed-off-by: JP Ikaheimonen <[email protected]>
---
 liblttng-ust/lttng-events.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/liblttng-ust/lttng-events.c b/liblttng-ust/lttng-events.c
index 915cffb..fa5596c 100644
--- a/liblttng-ust/lttng-events.c
+++ b/liblttng-ust/lttng-events.c
@@ -491,6 +491,29 @@ 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 found = 0;
+               int count, len;
+               char *excluder_name;
+
+               for (count = 0; count < excluder->excluder.count; count++) {
+                       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);
-- 
1.8.1.2


_______________________________________________
lttng-dev mailing list
[email protected]
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to