Gianni Tedesco
2010-Aug-13 16:25 UTC
[Xen-devel] [PATCH]: zap libxl_free() since there are no more callers
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. 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@lists.xensource.com http://lists.xensource.com/xen-devel
Gianni Tedesco
2010-Aug-13 16:27 UTC
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@citrix.com>> 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@lists.xensource.com > http://lists.xensource.com/xen-devel_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel