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