X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fdpif.c;h=1c1a5243fd008e10b86c10d33fea3049a86649ad;hb=7aaeab4df24b7e9460705b1dad1010eef0354c50;hp=0d8dd9d4f0d305ca38357d9249e22bf89bf72ee8;hpb=5703b15fd6d35071bbf8565d972087aa30cd1cb8;p=sliver-openvswitch.git diff --git a/lib/dpif.c b/lib/dpif.c index 0d8dd9d4f..1c1a5243f 100644 --- a/lib/dpif.c +++ b/lib/dpif.c @@ -61,6 +61,7 @@ static const struct dpif_class *base_dpif_classes[] = { &dpif_linux_class, #endif &dpif_netdev_class, + &dpif_planetlab_class, }; struct registered_dpif_class { @@ -71,7 +72,7 @@ static struct shash dpif_classes = SHASH_INITIALIZER(&dpif_classes); static struct sset dpif_blacklist = SSET_INITIALIZER(&dpif_blacklist); /* Protects 'dpif_classes', including the refcount, and 'dpif_blacklist'. */ -static pthread_mutex_t dpif_mutex = PTHREAD_MUTEX_INITIALIZER; +static struct ovs_mutex dpif_mutex = OVS_MUTEX_INITIALIZER; /* Rate limit for individual messages going to or from the datapath, output at * DBG level. This is very high because, if these are enabled, it is because @@ -145,9 +146,9 @@ dp_register_provider(const struct dpif_class *new_class) { int error; - xpthread_mutex_lock(&dpif_mutex); + ovs_mutex_lock(&dpif_mutex); error = dp_register_provider__(new_class); - xpthread_mutex_unlock(&dpif_mutex); + ovs_mutex_unlock(&dpif_mutex); return error; } @@ -190,9 +191,9 @@ dp_unregister_provider(const char *type) dp_initialize(); - xpthread_mutex_lock(&dpif_mutex); + ovs_mutex_lock(&dpif_mutex); error = dp_unregister_provider__(type); - xpthread_mutex_unlock(&dpif_mutex); + ovs_mutex_unlock(&dpif_mutex); return error; } @@ -202,9 +203,9 @@ dp_unregister_provider(const char *type) void dp_blacklist_provider(const char *type) { - xpthread_mutex_lock(&dpif_mutex); + ovs_mutex_lock(&dpif_mutex); sset_add(&dpif_blacklist, type); - xpthread_mutex_unlock(&dpif_mutex); + ovs_mutex_unlock(&dpif_mutex); } /* Clears 'types' and enumerates the types of all currently registered datapath @@ -217,21 +218,21 @@ dp_enumerate_types(struct sset *types) dp_initialize(); sset_clear(types); - xpthread_mutex_lock(&dpif_mutex); + ovs_mutex_lock(&dpif_mutex); SHASH_FOR_EACH(node, &dpif_classes) { const struct registered_dpif_class *registered_class = node->data; sset_add(types, registered_class->dpif_class->type); } - xpthread_mutex_unlock(&dpif_mutex); + ovs_mutex_unlock(&dpif_mutex); } static void dp_class_unref(struct registered_dpif_class *rc) { - xpthread_mutex_lock(&dpif_mutex); + ovs_mutex_lock(&dpif_mutex); ovs_assert(rc->refcount); rc->refcount--; - xpthread_mutex_unlock(&dpif_mutex); + ovs_mutex_unlock(&dpif_mutex); } static struct registered_dpif_class * @@ -239,12 +240,12 @@ dp_class_lookup(const char *type) { struct registered_dpif_class *rc; - xpthread_mutex_lock(&dpif_mutex); + ovs_mutex_lock(&dpif_mutex); rc = shash_find_data(&dpif_classes, type); if (rc) { rc->refcount++; } - xpthread_mutex_unlock(&dpif_mutex); + ovs_mutex_unlock(&dpif_mutex); return rc; } @@ -481,12 +482,12 @@ dpif_port_open_type(const char *datapath_type, const char *port_type) datapath_type = dpif_normalize_type(datapath_type); - xpthread_mutex_lock(&dpif_mutex); + ovs_mutex_lock(&dpif_mutex); rc = shash_find_data(&dpif_classes, datapath_type); if (rc && rc->dpif_class->port_open_type) { port_type = rc->dpif_class->port_open_type(rc->dpif_class, port_type); } - xpthread_mutex_unlock(&dpif_mutex); + ovs_mutex_unlock(&dpif_mutex); return port_type; } @@ -1351,7 +1352,7 @@ log_flow_message(const struct dpif *dpif, int error, const char *operation, if (error) { ds_put_format(&ds, "(%s) ", ovs_strerror(error)); } - odp_flow_format(key, key_len, mask, mask_len, &ds); + odp_flow_format(key, key_len, mask, mask_len, &ds, true); if (stats) { ds_put_cstr(&ds, ", "); dpif_flow_stats_format(stats, &ds);