On 09/01/2023 14:10, David Marchand wrote:
On Fri, Jan 6, 2023 at 3:59 PM Kevin Traynor <[email protected]> wrote:

xnanosleep forces the thread into quiesce state in anticipation that
it will be sleeping for a considerable time and that the thread may
need to quiesce before the sleep is finished.

In some cases, a very short sleep may be requested and in that case
the overhead of going to into quiesce state may be unnecessary.

To allow for those cases add a xnanosleep_no_quiesce() variant.

Suggested-by: Ilya Maximets <[email protected]>
Signed-off-by: Kevin Traynor <[email protected]>
---
  lib/util.c | 19 +++++++++++++++----
  lib/util.h |  1 +
  2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/lib/util.c b/lib/util.c
index 1195c7982..0daf06e8f 100644
--- a/lib/util.c
+++ b/lib/util.c
@@ -2372,9 +2372,7 @@ xsleep(unsigned int seconds)
  }

-/* High resolution sleep. */
-void
-xnanosleep(uint64_t nanoseconds)
+static void
+__xnanosleep(uint64_t nanoseconds)
  {

According to coding style:
"Do not use names that begin with _. If you need a name for “internal
use only”, use __ as a suffix instead of a prefix."

So it should be xnanosleep__.


-    ovsrcu_quiesce_start();
  #ifndef _WIN32
      int retval;
@@ -2404,7 +2402,20 @@ xnanosleep(uint64_t nanoseconds)
      }
  #endif
+}
+
+/* High resolution sleep with thread quiesce. */
+void
+xnanosleep(uint64_t nanoseconds) {

And I think { should be on next line.



+    ovsrcu_quiesce_start();
+    __xnanosleep(nanoseconds);
      ovsrcu_quiesce_end();
  }

+/* High resolution sleep without thread quiesce. */
+void
+xnanosleep_no_quiesce(uint64_t nanoseconds) {

Idem.


+    __xnanosleep(nanoseconds);
+}
+
  /* Determine whether standard output is a tty or not. This is useful to decide
   * whether to use color output or not when --color option for utilities is set
diff --git a/lib/util.h b/lib/util.h
index 9ff84b3dc..f35f33021 100644
--- a/lib/util.h
+++ b/lib/util.h
@@ -594,4 +594,5 @@ ovs_u128_is_superset(ovs_u128 super, ovs_u128 sub)
  void xsleep(unsigned int seconds);
  void xnanosleep(uint64_t nanoseconds);
+void xnanosleep_no_quiesce(uint64_t nanoseconds);

  bool is_stdout_a_tty(void);

With this fixed,
Reviewed-by: David Marchand <[email protected]>



I made the small changes above in v4 and added your RvB. Thanks!


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

Reply via email to