This patch defines the OVS_STATIC_TRACE() macro, and as an
example, adds two of them in the bridge run loop.

Signed-off-by: Eelco Chaudron <[email protected]>
---
 include/openvswitch/automake.mk   |    1 +
 include/openvswitch/usdt_probes.h |   50 +++++++++++++++++++++++++++++++++++++
 vswitchd/ovs-vswitchd.c           |    3 ++
 3 files changed, 54 insertions(+)
 create mode 100644 include/openvswitch/usdt_probes.h

diff --git a/include/openvswitch/automake.mk b/include/openvswitch/automake.mk
index 1fa6d88fa..317dc404f 100644
--- a/include/openvswitch/automake.mk
+++ b/include/openvswitch/automake.mk
@@ -43,6 +43,7 @@ openvswitchinclude_HEADERS = \
        include/openvswitch/tun-metadata.h \
        include/openvswitch/type-props.h \
        include/openvswitch/types.h \
+       include/openvswitch/usdt_probes.h \
        include/openvswitch/util.h \
        include/openvswitch/uuid.h \
        include/openvswitch/version.h \
diff --git a/include/openvswitch/usdt_probes.h 
b/include/openvswitch/usdt_probes.h
new file mode 100644
index 000000000..2f8882bd4
--- /dev/null
+++ b/include/openvswitch/usdt_probes.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2021 Red Hat, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef OPENVSWITCH_USDT_PROBES_H
+#define OPENVSWITCH_USDT_PROBES_H 1
+
+#ifdef HAVE_USDT_PROBES
+#include <sys/sdt.h>
+#endif
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+#ifdef HAVE_USDT_PROBES
+
+#define GET_DTRACE_FUNC(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10,  \
+                        NAME, ...) NAME
+
+#define OVS_USDT_PROBE(provider, name, ...)                           \
+    GET_DTRACE_FUNC(_0, ##__VA_ARGS__, DTRACE_PROBE10, DTRACE_PROBE9, \
+                    DTRACE_PROBE8, DTRACE_PROBE7, DTRACE_PROBE6,      \
+                    DTRACE_PROBE5, DTRACE_PROBE4, DTRACE_PROBE3,      \
+                    DTRACE_PROBE2, DTRACE_PROBE1, DTRACE_PROBE)       \
+        (provider, name, ##__VA_ARGS__)
+
+#else
+
+#define OVS_USDT_PROBE(...)
+
+#endif
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif /* usdt_probes.h */
diff --git a/vswitchd/ovs-vswitchd.c b/vswitchd/ovs-vswitchd.c
index f007f9c0b..932a1ba0b 100644
--- a/vswitchd/ovs-vswitchd.c
+++ b/vswitchd/ovs-vswitchd.c
@@ -50,6 +50,7 @@
 #include "util.h"
 #include "openvswitch/vconn.h"
 #include "openvswitch/vlog.h"
+#include "openvswitch/usdt_probes.h"
 #include "lib/vswitch-idl.h"
 #include "lib/dns-resolve.h"
 
@@ -115,6 +116,7 @@ main(int argc, char *argv[])
     exiting = false;
     cleanup = false;
     while (!exiting) {
+        OVS_USDT_PROBE(main, run_start);
         memory_run();
         if (memory_should_report()) {
             struct simap usage;
@@ -135,6 +137,7 @@ main(int argc, char *argv[])
         if (exiting) {
             poll_immediate_wake();
         }
+        OVS_USDT_PROBE(main, poll_block);
         poll_block();
         if (should_service_stop()) {
             exiting = true;

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to