summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2014-03-11 13:16:54 -0700
committerBen Pfaff <blp@nicira.com>2014-03-13 12:45:47 -0700
commit8917f72cbb04fb32dc29f93475bcd2de3011d442 (patch)
treec354424c44546c3da4d6da8200560a381c70df2e
parent6a36690c200a08dfbd5648269e3e1ab837d1b726 (diff)
downloadopenvswitch-8917f72cbb04fb32dc29f93475bcd2de3011d442.tar.gz
ovs-atomic: Delete atomic, atomic_flag, ovs_refcount destroy functions.
None of the atomic implementations need a destroy function anymore, so it's "more standard" and more convenient for users to get rid of them. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Andy Zhou <azhou@nicira.com>
-rw-r--r--lib/bfd.c3
-rw-r--r--lib/cfm.c6
-rw-r--r--lib/dpif-linux.c3
-rw-r--r--lib/dpif-netdev.c5
-rw-r--r--lib/lacp.c3
-rw-r--r--lib/mac-learning.c3
-rw-r--r--lib/netdev.c1
-rw-r--r--lib/netlink-socket.c1
-rw-r--r--lib/ovs-atomic-c11.h12
-rw-r--r--lib/ovs-atomic-clang.h1
-rw-r--r--lib/ovs-atomic-flag-gcc4.7+.h14
-rw-r--r--lib/ovs-atomic-gcc4+.h13
-rw-r--r--lib/ovs-atomic-gcc4.7+.h1
-rw-r--r--lib/ovs-atomic-pthreads.h13
-rw-r--r--lib/ovs-atomic.h30
-rw-r--r--lib/stp.c3
-rw-r--r--ofproto/bond.c3
-rw-r--r--ofproto/netflow.c3
-rw-r--r--ofproto/ofproto-dpif-ipfix.c3
-rw-r--r--ofproto/ofproto-dpif-sflow.c1
-rw-r--r--ofproto/ofproto-dpif-upcall.c3
-rw-r--r--ofproto/ofproto.c3
-rw-r--r--tests/test-atomic.c4
23 files changed, 12 insertions, 120 deletions
diff --git a/lib/bfd.c b/lib/bfd.c
index 1860cb6dd..d46f99219 100644
--- a/lib/bfd.c
+++ b/lib/bfd.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013 Nicira, Inc.
+/* Copyright (c) 2013, 2014 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -469,7 +469,6 @@ bfd_unref(struct bfd *bfd) OVS_EXCLUDED(mutex)
ovs_mutex_lock(&mutex);
hmap_remove(all_bfds, &bfd->node);
netdev_close(bfd->netdev);
- ovs_refcount_destroy(&bfd->ref_cnt);
free(bfd->name);
free(bfd);
ovs_mutex_unlock(&mutex);
diff --git a/lib/cfm.c b/lib/cfm.c
index 583df1ded..38448ab52 100644
--- a/lib/cfm.c
+++ b/lib/cfm.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2011, 2012, 2013 Nicira, Inc.
+ * Copyright (c) 2010, 2011, 2012, 2013, 2014 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -372,10 +372,6 @@ cfm_unref(struct cfm *cfm) OVS_EXCLUDED(mutex)
netdev_close(cfm->netdev);
free(cfm->rmps_array);
- atomic_destroy(&cfm->extended);
- atomic_destroy(&cfm->check_tnl_key);
- ovs_refcount_destroy(&cfm->ref_cnt);
-
free(cfm);
}
diff --git a/lib/dpif-linux.c b/lib/dpif-linux.c
index c2579f6bf..6f21fc47d 100644
--- a/lib/dpif-linux.c
+++ b/lib/dpif-linux.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
+ * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1120,7 +1120,6 @@ dpif_linux_flow_dump_done(const struct dpif *dpif OVS_UNUSED, void *iter_)
unsigned int nl_status = nl_dump_done(&iter->dump);
atomic_read(&iter->status, &dump_status);
- atomic_destroy(&iter->status);
free(iter);
return dump_status ? dump_status : nl_status;
}
diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index 5897f8bae..54b8f50c2 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -448,7 +448,6 @@ create_dp_netdev(const char *name, const struct dpif_class *class,
*CONST_CAST(const struct dpif_class **, &dp->class) = class;
*CONST_CAST(const char **, &dp->name) = xstrdup(name);
ovs_refcount_init(&dp->ref_cnt);
- atomic_flag_init(&dp->destroyed);
ovs_mutex_init(&dp->flow_mutex);
classifier_init(&dp->cls, NULL);
@@ -558,8 +557,6 @@ dp_netdev_free(struct dp_netdev *dp)
ovs_mutex_destroy(&dp->flow_mutex);
seq_destroy(dp->port_seq);
hmap_destroy(&dp->ports);
- atomic_flag_destroy(&dp->destroyed);
- ovs_refcount_destroy(&dp->ref_cnt);
latch_destroy(&dp->exit_latch);
free(CONST_CAST(char *, dp->name));
free(dp);
@@ -871,7 +868,6 @@ dp_netdev_flow_unref(struct dp_netdev_flow *flow)
cls_rule_destroy(CONST_CAST(struct cls_rule *, &flow->cr));
ovs_mutex_lock(&flow->mutex);
dp_netdev_actions_unref(flow->actions);
- ovs_refcount_destroy(&flow->ref_cnt);
ovs_mutex_unlock(&flow->mutex);
ovs_mutex_destroy(&flow->mutex);
free(flow);
@@ -1579,7 +1575,6 @@ void
dp_netdev_actions_unref(struct dp_netdev_actions *actions)
{
if (actions && ovs_refcount_unref(&actions->ref_cnt) == 1) {
- ovs_refcount_destroy(&actions->ref_cnt);
free(actions->actions);
free(actions);
}
diff --git a/lib/lacp.c b/lib/lacp.c
index a3f72edd0..cbe2259f4 100644
--- a/lib/lacp.c
+++ b/lib/lacp.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011, 2012, 2013 Nicira, Inc.
+/* Copyright (c) 2011, 2012, 2013, 2014 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -249,7 +249,6 @@ lacp_unref(struct lacp *lacp) OVS_EXCLUDED(mutex)
hmap_destroy(&lacp->slaves);
list_remove(&lacp->node);
free(lacp->name);
- ovs_refcount_destroy(&lacp->ref_cnt);
free(lacp);
ovs_mutex_unlock(&mutex);
}
diff --git a/lib/mac-learning.c b/lib/mac-learning.c
index 01a34f583..0854eb92a 100644
--- a/lib/mac-learning.c
+++ b/lib/mac-learning.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
+ * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -141,7 +141,6 @@ mac_learning_unref(struct mac_learning *ml)
bitmap_free(ml->flood_vlans);
ovs_rwlock_destroy(&ml->rwlock);
- ovs_refcount_destroy(&ml->ref_cnt);
free(ml);
}
}
diff --git a/lib/netdev.c b/lib/netdev.c
index 0567759f2..e9c8d8f03 100644
--- a/lib/netdev.c
+++ b/lib/netdev.c
@@ -225,7 +225,6 @@ netdev_unregister_provider(const char *type)
atomic_read(&rc->ref_cnt, &ref_cnt);
if (!ref_cnt) {
hmap_remove(&netdev_classes, &rc->hmap_node);
- atomic_destroy(&rc->ref_cnt);
free(rc);
error = 0;
} else {
diff --git a/lib/netlink-socket.c b/lib/netlink-socket.c
index 375772f5e..8c8d16be7 100644
--- a/lib/netlink-socket.c
+++ b/lib/netlink-socket.c
@@ -822,7 +822,6 @@ nl_dump_done(struct nl_dump *dump)
ovs_assert(status);
ofpbuf_uninit(&buf);
}
- atomic_destroy(&dump->status);
nl_pool_release(dump->sock);
seq_destroy(dump->status_seq);
return status >> 1;
diff --git a/lib/ovs-atomic-c11.h b/lib/ovs-atomic-c11.h
index 946d412b9..66d421c18 100644
--- a/lib/ovs-atomic-c11.h
+++ b/lib/ovs-atomic-c11.h
@@ -52,15 +52,3 @@
(*(ORIG) = atomic_fetch_xor_explicit(RMW, ARG, ORDER), (void) 0)
#define atomic_and_explicit(RMW, ARG, ORIG, ORDER) \
(*(ORIG) = atomic_fetch_and_explicit(RMW, ARG, ORDER), (void) 0)
-
-static inline void
-atomic_flag_init(volatile atomic_flag *object OVS_UNUSED)
-{
- /* Nothing to do. */
-}
-
-static inline void
-atomic_flag_destroy(volatile atomic_flag *object OVS_UNUSED)
-{
- /* Nothing to do. */
-}
diff --git a/lib/ovs-atomic-clang.h b/lib/ovs-atomic-clang.h
index 6792985ce..c83afab9b 100644
--- a/lib/ovs-atomic-clang.h
+++ b/lib/ovs-atomic-clang.h
@@ -26,7 +26,6 @@
#define ATOMIC_VAR_INIT(VALUE) (VALUE)
#define atomic_init(OBJECT, VALUE) __c11_atomic_init(OBJECT, VALUE)
-#define atomic_destroy(OBJECT) ((void) (OBJECT))
/* Clang hard-codes these exact values internally but does not appear to
* export any names for them. */
diff --git a/lib/ovs-atomic-flag-gcc4.7+.h b/lib/ovs-atomic-flag-gcc4.7+.h
index 385d0de92..49cd5d20f 100644
--- a/lib/ovs-atomic-flag-gcc4.7+.h
+++ b/lib/ovs-atomic-flag-gcc4.7+.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013 Nicira, Inc.
+ * Copyright (c) 2013, 2014 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -26,18 +26,6 @@ typedef struct {
} atomic_flag;
#define ATOMIC_FLAG_INIT { .b = false }
-static inline void
-atomic_flag_init(volatile atomic_flag *object OVS_UNUSED)
-{
- /* Nothing to do. */
-}
-
-static inline void
-atomic_flag_destroy(volatile atomic_flag *object OVS_UNUSED)
-{
- /* Nothing to do. */
-}
-
static inline bool
atomic_flag_test_and_set_explicit(volatile atomic_flag *object,
memory_order order)
diff --git a/lib/ovs-atomic-gcc4+.h b/lib/ovs-atomic-gcc4+.h
index e237c20c8..2a1b278b7 100644
--- a/lib/ovs-atomic-gcc4+.h
+++ b/lib/ovs-atomic-gcc4+.h
@@ -45,7 +45,6 @@ typedef enum {
#define ATOMIC_VAR_INIT(VALUE) VALUE
#define atomic_init(OBJECT, VALUE) (*(OBJECT) = (VALUE), (void) 0)
-#define atomic_destroy(OBJECT) ((void) (OBJECT))
static inline void
atomic_thread_fence(memory_order order)
@@ -146,18 +145,6 @@ typedef struct {
} atomic_flag;
#define ATOMIC_FLAG_INIT { false }
-static inline void
-atomic_flag_init(volatile atomic_flag *object OVS_UNUSED)
-{
- /* Nothing to do. */
-}
-
-static inline void
-atomic_flag_destroy(volatile atomic_flag *object OVS_UNUSED)
-{
- /* Nothing to do. */
-}
-
static inline bool
atomic_flag_test_and_set(volatile atomic_flag *object)
{
diff --git a/lib/ovs-atomic-gcc4.7+.h b/lib/ovs-atomic-gcc4.7+.h
index 99c6b1fa6..f465e516b 100644
--- a/lib/ovs-atomic-gcc4.7+.h
+++ b/lib/ovs-atomic-gcc4.7+.h
@@ -32,7 +32,6 @@ typedef enum {
#define ATOMIC_VAR_INIT(VALUE) (VALUE)
#define atomic_init(OBJECT, VALUE) (*(OBJECT) = (VALUE), (void) 0)
-#define atomic_destroy(OBJECT) ((void) (OBJECT))
#define atomic_thread_fence __atomic_thread_fence
#define atomic_signal_fence __atomic_signal_fence
diff --git a/lib/ovs-atomic-pthreads.h b/lib/ovs-atomic-pthreads.h
index b49d6991b..33270c6a2 100644
--- a/lib/ovs-atomic-pthreads.h
+++ b/lib/ovs-atomic-pthreads.h
@@ -44,7 +44,6 @@ typedef enum {
#define ATOMIC_VAR_INIT(VALUE) (VALUE)
#define atomic_init(OBJECT, VALUE) (*(OBJECT) = (VALUE), (void) 0)
-#define atomic_destroy(OBJECT) ((void) (OBJECT))
static inline void
atomic_thread_fence(memory_order order OVS_UNUSED)
@@ -92,18 +91,6 @@ typedef struct {
} atomic_flag;
#define ATOMIC_FLAG_INIT { false }
-static inline void
-atomic_flag_init(volatile atomic_flag *flag OVS_UNUSED)
-{
- /* Nothing to do. */
-}
-
-static inline void
-atomic_flag_destroy(volatile atomic_flag *flag OVS_UNUSED)
-{
- /* Nothing to do. */
-}
-
static inline bool
atomic_flag_test_and_set(volatile atomic_flag *flag_)
{
diff --git a/lib/ovs-atomic.h b/lib/ovs-atomic.h
index 62cd25862..01ac8c4f7 100644
--- a/lib/ovs-atomic.h
+++ b/lib/ovs-atomic.h
@@ -102,15 +102,6 @@
* ...
* atomic_init(&ai, 123);
*
- * C11 does not hav an destruction function for atomic types, but some
- * implementations of the OVS atomics do need them. Thus, the following
- * function is provided for destroying non-static atomic objects (A is any
- * atomic type):
- *
- * void atomic_destroy(A *object);
- *
- * Destroys 'object'.
- *
*
* Barriers
* ========
@@ -224,19 +215,7 @@
* ATOMIC_FLAG_INIT is an initializer for atomic_flag. The initial state is
* "clear".
*
- * C11 does not have an initialization or destruction function for atomic_flag,
- * because implementations should not need one (one may simply
- * atomic_flag_clear() an uninitialized atomic_flag), but some implementations
- * of the OVS atomics do need them. Thus, the following two functions are
- * provided for initializing and destroying non-static atomic_flags:
- *
- * void atomic_flag_init(volatile atomic_flag *object);
- *
- * Initializes 'object'. The initial state is "clear".
- *
- * void atomic_flag_destroy(volatile atomic_flag *object);
- *
- * Destroys 'object'.
+ * An atomic_flag may also be initialized at runtime with atomic_flag_clear().
*
*
* Operations
@@ -336,13 +315,6 @@ ovs_refcount_init(struct ovs_refcount *refcount)
atomic_init(&refcount->count, 1);
}
-/* Destroys 'refcount'. */
-static inline void
-ovs_refcount_destroy(struct ovs_refcount *refcount)
-{
- atomic_destroy(&refcount->count);
-}
-
/* Increments 'refcount'. */
static inline void
ovs_refcount_ref(struct ovs_refcount *refcount)
diff --git a/lib/stp.c b/lib/stp.c
index e4ddf3ca2..afe77d082 100644
--- a/lib/stp.c
+++ b/lib/stp.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
+ * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -332,7 +332,6 @@ stp_unref(struct stp *stp)
list_remove(&stp->node);
ovs_mutex_unlock(&mutex);
free(stp->name);
- ovs_refcount_destroy(&stp->ref_cnt);
free(stp);
}
}
diff --git a/ofproto/bond.c b/ofproto/bond.c
index c4cfa45b4..21201eedd 100644
--- a/ofproto/bond.c
+++ b/ofproto/bond.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
+ * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -236,7 +236,6 @@ bond_unref(struct bond *bond)
ovs_mutex_destroy(&bond->mutex);
free(bond->hash);
free(bond->name);
- ovs_refcount_destroy(&bond->ref_cnt);
free(bond);
}
diff --git a/ofproto/netflow.c b/ofproto/netflow.c
index dcbb84a85..a09374999 100644
--- a/ofproto/netflow.c
+++ b/ofproto/netflow.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2009, 2010, 2011, 2013 Nicira, Inc.
+ * Copyright (c) 2008, 2009, 2010, 2011, 2013, 2014 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -430,7 +430,6 @@ netflow_unref(struct netflow *nf)
atomic_sub(&netflow_count, 1, &orig);
collectors_destroy(nf->collectors);
ofpbuf_uninit(&nf->packet);
- ovs_refcount_destroy(&nf->ref_cnt);
free(nf);
}
}
diff --git a/ofproto/ofproto-dpif-ipfix.c b/ofproto/ofproto-dpif-ipfix.c
index a5298847c..c8fb3d7aa 100644
--- a/ofproto/ofproto-dpif-ipfix.c
+++ b/ofproto/ofproto-dpif-ipfix.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013 Nicira, Inc.
+ * Copyright (c) 2012, 2013, 2014 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -699,7 +699,6 @@ dpif_ipfix_unref(struct dpif_ipfix *di) OVS_EXCLUDED(mutex)
dpif_ipfix_clear(di);
dpif_ipfix_bridge_exporter_destroy(&di->bridge_exporter);
hmap_destroy(&di->flow_exporter_map);
- ovs_refcount_destroy(&di->ref_cnt);
free(di);
ovs_mutex_unlock(&mutex);
}
diff --git a/ofproto/ofproto-dpif-sflow.c b/ofproto/ofproto-dpif-sflow.c
index ff07e70cf..eeff13ff3 100644
--- a/ofproto/ofproto-dpif-sflow.c
+++ b/ofproto/ofproto-dpif-sflow.c
@@ -370,7 +370,6 @@ dpif_sflow_unref(struct dpif_sflow *ds) OVS_EXCLUDED(mutex)
dpif_sflow_del_port__(ds, dsp);
}
hmap_destroy(&ds->ports);
- ovs_refcount_destroy(&ds->ref_cnt);
free(ds);
}
}
diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c
index 0d5b25189..496593b32 100644
--- a/ofproto/ofproto-dpif-upcall.c
+++ b/ofproto/ofproto-dpif-upcall.c
@@ -285,9 +285,6 @@ udpif_destroy(struct udpif *udpif)
latch_destroy(&udpif->exit_latch);
seq_destroy(udpif->reval_seq);
seq_destroy(udpif->dump_seq);
- atomic_destroy(&udpif->flow_limit);
- atomic_destroy(&udpif->n_flows);
- atomic_destroy(&udpif->n_flows_timestamp);
ovs_mutex_destroy(&udpif->n_flows_mutex);
free(udpif);
}
diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
index 45621e962..884e63ef8 100644
--- a/ofproto/ofproto.c
+++ b/ofproto/ofproto.c
@@ -2615,7 +2615,6 @@ ofproto_rule_destroy__(struct rule *rule)
cls_rule_destroy(CONST_CAST(struct cls_rule *, &rule->cr));
rule_actions_unref(rule->actions);
ovs_mutex_destroy(&rule->mutex);
- ovs_refcount_destroy(&rule->ref_count);
rule->ofproto->ofproto_class->rule_dealloc(rule);
}
@@ -2656,7 +2655,6 @@ void
rule_actions_unref(struct rule_actions *actions)
{
if (actions && ovs_refcount_unref(&actions->ref_count) == 1) {
- ovs_refcount_destroy(&actions->ref_count);
free(actions->ofpacts);
free(actions);
}
@@ -6705,7 +6703,6 @@ oftable_destroy(struct oftable *table)
oftable_disable_eviction(table);
classifier_destroy(&table->cls);
free(table->name);
- atomic_destroy(&table->config);
}
/* Changes the name of 'table' to 'name'. If 'name' is NULL or the empty
diff --git a/tests/test-atomic.c b/tests/test-atomic.c
index bc00df139..887789bbe 100644
--- a/tests/test-atomic.c
+++ b/tests/test-atomic.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013 Nicira, Inc.
+ * Copyright (c) 2013, 2014 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -59,8 +59,6 @@
ovs_assert(orig == 2); \
atomic_read(&x, &value); \
ovs_assert(value == 8); \
- \
- atomic_destroy(&x); \
}
static void