From: Ben Pfaff Date: Tue, 23 Apr 2013 22:00:06 +0000 (-0700) Subject: ovsdb-data: Make ovsdb_atom_default() thread-safe. X-Git-Tag: sliver-openvswitch-2.0.90-1~35^2~5 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=21a0e105f175926d1d10d324565915ccb96fd28b;p=sliver-openvswitch.git ovsdb-data: Make ovsdb_atom_default() thread-safe. Signed-off-by: Ben Pfaff --- diff --git a/lib/ovsdb-data.c b/lib/ovsdb-data.c index 7ec769479..ade1971c3 100644 --- a/lib/ovsdb-data.c +++ b/lib/ovsdb-data.c @@ -24,6 +24,7 @@ #include "dynamic-string.h" #include "hash.h" +#include "ovs-thread.h" #include "ovsdb-error.h" #include "ovsdb-parser.h" #include "json.h" @@ -94,9 +95,9 @@ const union ovsdb_atom * ovsdb_atom_default(enum ovsdb_atomic_type type) { static union ovsdb_atom default_atoms[OVSDB_N_TYPES]; - static bool inited; + static struct ovsthread_once once = OVSTHREAD_ONCE_INITIALIZER; - if (!inited) { + if (ovsthread_once_start(&once)) { int i; for (i = 0; i < OVSDB_N_TYPES; i++) { @@ -104,7 +105,7 @@ ovsdb_atom_default(enum ovsdb_atomic_type type) ovsdb_atom_init_default(&default_atoms[i], i); } } - inited = true; + ovsthread_once_done(&once); } ovs_assert(ovsdb_atomic_type_is_valid(type));