[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