Signed-off-by: Ben Pfaff <b...@nicira.com> --- lib/dpif-linux.c | 7 +++++-- lib/dpif.c | 6 +++--- 2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/lib/dpif-linux.c b/lib/dpif-linux.c index 958873c..831da3b 100644 --- a/lib/dpif-linux.c +++ b/lib/dpif-linux.c @@ -1440,9 +1440,10 @@ const struct dpif_class dpif_linux_class = { static int dpif_linux_init(void) { - static int error = -1; + static struct ovsthread_once once = OVSTHREAD_ONCE_INITIALIZER; + static int error; - if (error < 0) { + if (ovsthread_once_start(&once)) { unsigned int ovs_vport_mcgroup; error = nl_lookup_genl_family(OVS_DATAPATH_FAMILY, @@ -1472,6 +1473,8 @@ dpif_linux_init(void) nln = nln_create(NETLINK_GENERIC, ovs_vport_mcgroup, dpif_linux_nln_parse, &vport); } + + ovsthread_once_done(&once); } return error; diff --git a/lib/dpif.c b/lib/dpif.c index e793262..4878aac 100644 --- a/lib/dpif.c +++ b/lib/dpif.c @@ -97,15 +97,15 @@ static void log_execute_message(struct dpif *, const struct dpif_execute *, static void dp_initialize(void) { - static int status = -1; + static struct ovsthread_once once = OVSTHREAD_ONCE_INITIALIZER; - if (status < 0) { + if (ovsthread_once_start(&once)) { int i; - status = 0; for (i = 0; i < ARRAY_SIZE(base_dpif_classes); i++) { dp_register_provider(base_dpif_classes[i]); } + ovsthread_once_done(&once); } } -- 1.7.2.5 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev