[ovs-dev] [threads v2 12/13] vlog: Make VLOG_ONCE thread-safe.

Ben Pfaff blp at nicira.com
Fri Jul 12 21:54:39 UTC 2013


Of course, the code it calls into isn't thread-safe itself yet.

Signed-off-by: Ben Pfaff <blp at nicira.com>
---
 lib/vlog.h |   14 +++++++-------
 1 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/lib/vlog.h b/lib/vlog.h
index 3466d96..eeec5fc 100644
--- a/lib/vlog.h
+++ b/lib/vlog.h
@@ -231,13 +231,13 @@ void vlog_usage(void);
             vlog_rate_limit(THIS_MODULE, level__, RL, __VA_ARGS__); \
         }                                                           \
     } while (0)
-#define VLOG_ONCE(LEVEL, ...)                       \
-    do {                                            \
-        static bool already_logged;                 \
-        if (!already_logged) {                      \
-            already_logged = true;                  \
-            vlog(THIS_MODULE, LEVEL, __VA_ARGS__);  \
-        }                                           \
+#define VLOG_ONCE(LEVEL, ...)                                           \
+    do {                                                                \
+        static struct ovsthread_once once = OVSTHREAD_ONCE_INITIALIZER; \
+        if (ovsthread_once_start(&once)) {                              \
+            vlog(THIS_MODULE, LEVEL, __VA_ARGS__);                      \
+            ovsthread_once_done(&once);                                 \
+        }                                                               \
     } while (0)
 
 #define VLOG_DEFINE_MODULE__(MODULE)                                    \
-- 
1.7.2.5




More information about the dev mailing list