[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH]: zap libxl_free() since there are no more callers



On Fri, 2010-08-13 at 17:25 +0100, Gianni Tedesco wrote:
> libxl_free() allows allocated memory to be explicitly free'd from a
> libxl_gc. Every previous use of this function has now been made
> redundant and therefore has been removed. We can safely kill it and
> amend the policy accordingly.

Signed-off-by: Gianni Tedesco <gianni.tedesco@xxxxxxxxxx>

> diff -r 8d0ebf3993aa tools/libxl/libxl.h
> --- a/tools/libxl/libxl.h     Fri Aug 13 17:25:23 2010 +0100
> +++ b/tools/libxl/libxl.h     Fri Aug 13 17:27:47 2010 +0100
> @@ -117,10 +117,9 @@
>   *     and an internal wrapper adds the relevant pointers to the gc.
>   *     The latter method is preferred for obvious performance reasons.
>   *
> - * No temporary objects allocated from the pool should be explicitly freed.
> - * Calling libxl_free_all() before returning from a public functions will do
> - * this. The upshot of this is that almost all calls to libxl_free() are
> - * erroneous.
> + * No temporary objects allocated from the pool may be explicitly freed.
> + * Therefore public functions which initialize a libxl_gc MUST call
> + * libxl_free_all() before returning.
>   */
>  #ifndef LIBXL_H
>  #define LIBXL_H
> diff -r 8d0ebf3993aa tools/libxl/libxl_internal.c
> --- a/tools/libxl/libxl_internal.c    Fri Aug 13 17:25:23 2010 +0100
> +++ b/tools/libxl/libxl_internal.c    Fri Aug 13 17:27:47 2010 +0100
> @@ -59,25 +59,6 @@ int libxl_ptr_add(libxl_gc *gc, void *pt
>      return 0;
>  }
>  
> -void libxl_free(libxl_gc *gc, void *ptr)
> -{
> -    int i;
> -
> -    if (!ptr)
> -        return;
> -
> -    /* remove the pointer from the tracked ptrs */
> -    for (i = 0; i < gc->alloc_maxsize; i++) {
> -        if (gc->alloc_ptrs[i] == ptr) {
> -            gc->alloc_ptrs[i] = NULL;
> -            free(ptr);
> -            return;
> -        }
> -    }
> -    /* haven't find the pointer, really bad */
> -    abort();
> -}
> -
>  void libxl_free_all(libxl_gc *gc)
>  {
>      void *ptr;
> diff -r 8d0ebf3993aa tools/libxl/libxl_internal.h
> --- a/tools/libxl/libxl_internal.h    Fri Aug 13 17:25:23 2010 +0100
> +++ b/tools/libxl/libxl_internal.h    Fri Aug 13 17:27:47 2010 +0100
> @@ -129,7 +129,6 @@ static inline libxl_ctx *libxl_gc_owner(
>  
>  /* memory allocation tracking/helpers */
>  _hidden int libxl_ptr_add(libxl_gc *gc, void *ptr);
> -_hidden void libxl_free(libxl_gc *gc, void *ptr);
>  _hidden void libxl_free_all(libxl_gc *gc);
>  _hidden void *libxl_zalloc(libxl_gc *gc, int bytes);
>  _hidden void *libxl_calloc(libxl_gc *gc, size_t nmemb, size_t size);
> 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.