diff mbox series

[ovs-dev,2/5] openvswitch: define the OVS_STATIC_TRACE() macro

Message ID 163949553494.1639090.15674901303169003314.stgit@ebuild
State Superseded
Headers show
Series adding USDT points to OVS | expand

Checks

Context Check Description
ovsrobot/apply-robot success apply and check: success
ovsrobot/github-robot-_Build_and_Test success github build: passed

Commit Message

Eelco Chaudron Dec. 14, 2021, 3:25 p.m. UTC
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 <echaudro@redhat.com>
---
 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

Comments

Paolo Valerio Dec. 19, 2021, 11:43 p.m. UTC | #1
Eelco Chaudron <echaudro@redhat.com> writes:

> 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 <echaudro@redhat.com>
> ---

LGTM,

Acked-by: Paolo Valerio <pvalerio@redhat.com>

>  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
> dev@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
diff mbox series

Patch

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;