From 8917f72cbb04fb32dc29f93475bcd2de3011d442 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Tue, 11 Mar 2014 13:16:54 -0700 Subject: [PATCH] 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 Acked-by: Andy Zhou --- lib/bfd.c | 3 +-- lib/cfm.c | 6 +----- lib/dpif-linux.c | 3 +-- lib/dpif-netdev.c | 5 ----- lib/lacp.c | 3 +-- lib/mac-learning.c | 3 +-- lib/netdev.c | 1 - lib/netlink-socket.c | 1 - lib/ovs-atomic-c11.h | 12 ------------ lib/ovs-atomic-clang.h | 1 - lib/ovs-atomic-flag-gcc4.7+.h | 14 +------------- lib/ovs-atomic-gcc4+.h | 13 ------------- lib/ovs-atomic-gcc4.7+.h | 1 - lib/ovs-atomic-pthreads.h | 13 ------------- lib/ovs-atomic.h | 30 +----------------------------- lib/stp.c | 3 +-- ofproto/bond.c | 3 +-- ofproto/netflow.c | 3 +-- ofproto/ofproto-dpif-ipfix.c | 3 +-- ofproto/ofproto-dpif-sflow.c | 1 - ofproto/ofproto-dpif-upcall.c | 3 --- ofproto/ofproto.c | 3 --- tests/test-atomic.c | 4 +--- 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 -- 2.43.0