On Wed, Aug 28, 2013 at 11:55:36PM -0700, Ben Pfaff wrote:
> An upcoming commit will add more users.
> 
> Signed-off-by: Ben Pfaff <b...@nicira.com>

Reviewed-by: Simon Horman <ho...@verge.net.au>

I see no particular harm in applying this, list_move()
is already used twice.

> ---
>  lib/list.c             |   14 ++++++++++++++
>  lib/list.h             |    3 ++-
>  ofproto/ofproto-dpif.c |   22 ++++++----------------
>  3 files changed, 22 insertions(+), 17 deletions(-)
> 
> diff --git a/lib/list.c b/lib/list.c
> index 227546e..e341d45 100644
> --- a/lib/list.c
> +++ b/lib/list.c
> @@ -101,6 +101,20 @@ list_moved(struct list *list)
>      list->prev->next = list->next->prev = list;
>  }
>  
> +/* Initializes 'dst' with the contents of 'src', compensating for moving it
> + * around in memory.  The effect is that, if 'src' was the head of a list, 
> now
> + * 'dst' is the head of a list containing the same elements. */
> +void
> +list_move(struct list *dst, struct list *src)
> +{
> +    if (!list_is_empty(src)) {
> +        *dst = *src;
> +        list_moved(dst);
> +    } else {
> +        list_init(dst);
> +    }
> +}
> +
>  /* Removes 'elem' from its list and returns the element that followed it.
>     Undefined behavior if 'elem' is not in a list. */
>  struct list *
> diff --git a/lib/list.h b/lib/list.h
> index 786b176..0da082e 100644
> --- a/lib/list.h
> +++ b/lib/list.h
> @@ -1,5 +1,5 @@
>  /*
> - * Copyright (c) 2008, 2009, 2010, 2011 Nicira, Inc.
> + * Copyright (c) 2008, 2009, 2010, 2011, 2013 Nicira, Inc.
>   *
>   * Licensed under the Apache License, Version 2.0 (the "License");
>   * you may not use this file except in compliance with the License.
> @@ -40,6 +40,7 @@ void list_push_front(struct list *, struct list *);
>  void list_push_back(struct list *, struct list *);
>  void list_replace(struct list *, const struct list *);
>  void list_moved(struct list *);
> +void list_move(struct list *dst, struct list *src);
>  
>  /* List removal. */
>  struct list *list_remove(struct list *);
> diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
> index d4c8f73..820ec34 100644
> --- a/ofproto/ofproto-dpif.c
> +++ b/ofproto/ofproto-dpif.c
> @@ -1500,14 +1500,9 @@ run_fast(struct ofproto *ofproto_)
>      }
>  
>      ovs_mutex_lock(&ofproto->flow_mod_mutex);
> -    if (ofproto->n_flow_mods) {
> -        flow_mods = ofproto->flow_mods;
> -        list_moved(&flow_mods);
> -        list_init(&ofproto->flow_mods);
> -        ofproto->n_flow_mods = 0;
> -    } else {
> -        list_init(&flow_mods);
> -    }
> +    list_move(&flow_mods, &ofproto->flow_mods);
> +    list_init(&ofproto->flow_mods);
> +    ofproto->n_flow_mods = 0;
>      ovs_mutex_unlock(&ofproto->flow_mod_mutex);
>  
>      LIST_FOR_EACH_SAFE (fm, next_fm, list_node, &flow_mods) {
> @@ -1523,14 +1518,9 @@ run_fast(struct ofproto *ofproto_)
>      }
>  
>      ovs_mutex_lock(&ofproto->pin_mutex);
> -    if (ofproto->n_pins) {
> -        pins = ofproto->pins;
> -        list_moved(&pins);
> -        list_init(&ofproto->pins);
> -        ofproto->n_pins = 0;
> -    } else {
> -        list_init(&pins);
> -    }
> +    list_move(&pins, &ofproto->pins);
> +    list_init(&ofproto->pins);
> +    ofproto->n_pins = 0;
>      ovs_mutex_unlock(&ofproto->pin_mutex);
>  
>      LIST_FOR_EACH_SAFE (pin, next_pin, list_node, &pins) {
> -- 
> 1.7.10.4
> 
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
> 
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to