Directly skip the block when a trace point does not match the user
criteria.

Signed-off-by: David Marchand <david.march...@redhat.com>
Acked-by: Jerin Jacob <jer...@marvell.com>
Acked-by: Sunil Kumar Kori <sk...@marvell.com>
---
 lib/eal/common/eal_common_trace.c | 34 +++++++++++++++++--------------
 1 file changed, 19 insertions(+), 15 deletions(-)

diff --git a/lib/eal/common/eal_common_trace.c 
b/lib/eal/common/eal_common_trace.c
index 1db11e3e14..6b8660c318 100644
--- a/lib/eal/common/eal_common_trace.c
+++ b/lib/eal/common/eal_common_trace.c
@@ -186,15 +186,18 @@ rte_trace_pattern(const char *pattern, bool enable)
        int rc = 0, found = 0;
 
        STAILQ_FOREACH(tp, &tp_list, next) {
-               if (fnmatch(pattern, tp->name, 0) == 0) {
-                       if (enable)
-                               rc = rte_trace_point_enable(tp->handle);
-                       else
-                               rc = rte_trace_point_disable(tp->handle);
-                       found = 1;
+               if (fnmatch(pattern, tp->name, 0) != 0)
+                       continue;
+
+               if (enable)
+                       rc = rte_trace_point_enable(tp->handle);
+               else
+                       rc = rte_trace_point_disable(tp->handle);
+               if (rc < 0) {
+                       found = 0;
+                       break;
                }
-               if (rc < 0)
-                       return rc;
+               found = 1;
        }
 
        return rc | found;
@@ -211,17 +214,18 @@ rte_trace_regexp(const char *regex, bool enable)
                return -EINVAL;
 
        STAILQ_FOREACH(tp, &tp_list, next) {
-               if (regexec(&r, tp->name, 0, NULL, 0) == 0) {
-                       if (enable)
-                               rc = rte_trace_point_enable(tp->handle);
-                       else
-                               rc = rte_trace_point_disable(tp->handle);
-                       found = 1;
-               }
+               if (regexec(&r, tp->name, 0, NULL, 0) != 0)
+                       continue;
+
+               if (enable)
+                       rc = rte_trace_point_enable(tp->handle);
+               else
+                       rc = rte_trace_point_disable(tp->handle);
                if (rc < 0) {
                        found = 0;
                        break;
                }
+               found = 1;
        }
        regfree(&r);
 
-- 
2.37.3

Reply via email to