[Mesa-dev] [PATCH 2/2] Move _mesa_dl* functions into dlopen.h and inline them

Tapani Pälli tapani.palli at intel.com
Thu Aug 23 02:50:22 PDT 2012


On 08/22/2012 10:48 PM, Matt Turner wrote:
> No point in having an extra function call for inlinable functions.
> 
> Cc: Tapani Pälli <tapani.palli at intel.com>

works fine for me

Reviewed-by: Tapani Pälli <tapani.palli at intel.com>


> ---
>  src/mesa/SConscript    |    1 -
>  src/mesa/main/dlopen.c |  112 ------------------------------------------------
>  src/mesa/main/dlopen.h |   83 ++++++++++++++++++++++++++++++++---
>  src/mesa/sources.mak   |    1 -
>  4 files changed, 75 insertions(+), 122 deletions(-)
>  delete mode 100644 src/mesa/main/dlopen.c
> 
> diff --git a/src/mesa/SConscript b/src/mesa/SConscript
> index 1b98b04..5668962 100644
> --- a/src/mesa/SConscript
> +++ b/src/mesa/SConscript
> @@ -60,7 +60,6 @@ main_sources = [
>      'main/debug.c',
>      'main/depth.c',
>      'main/dlist.c',
> -    'main/dlopen.c',
>      'main/drawpix.c',
>      'main/drawtex.c',
>      'main/enable.c',
> diff --git a/src/mesa/main/dlopen.c b/src/mesa/main/dlopen.c
> deleted file mode 100644
> index aaee963..0000000
> --- a/src/mesa/main/dlopen.c
> +++ /dev/null
> @@ -1,112 +0,0 @@
> -/*
> - * Mesa 3-D graphics library
> - *
> - * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
> - *
> - * Permission is hereby granted, free of charge, to any person obtaining a
> - * copy of this software and associated documentation files (the "Software"),
> - * to deal in the Software without restriction, including without limitation
> - * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> - * and/or sell copies of the Software, and to permit persons to whom the
> - * Software is furnished to do so, subject to the following conditions:
> - *
> - * The above copyright notice and this permission notice shall be included
> - * in all copies or substantial portions of the Software.
> - *
> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
> - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
> - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
> - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
> - */
> -
> -
> -/**
> - * Wrapper functions for dlopen(), dlsym(), dlclose().
> - * Note that the #ifdef tests for various environments should be expanded.
> - */
> -
> -
> -#include "compiler.h"
> -#include "dlopen.h"
> -
> -#if defined(HAVE_DLOPEN)
> -#include <dlfcn.h>
> -#endif
> -#if defined(_WIN32)
> -#include <windows.h>
> -#endif
> -
> -
> -/**
> - * Wrapper for dlopen().
> - * Note that 'flags' isn't used at this time.
> - */
> -void *
> -_mesa_dlopen(const char *libname, int flags)
> -{
> -#if defined(__blrts)
> -   return NULL;
> -#elif defined(HAVE_DLOPEN)
> -   flags = RTLD_LAZY | RTLD_GLOBAL; /* Overriding flags at this time */
> -   return dlopen(libname, flags);
> -#elif defined(__MINGW32__)
> -   return LoadLibraryA(libname);
> -#else
> -   return NULL;
> -#endif
> -}
> -
> -
> -/**
> - * Wrapper for dlsym() that does a cast to a generic function type,
> - * rather than a void *.  This reduces the number of warnings that are
> - * generated.
> - */
> -GenericFunc
> -_mesa_dlsym(void *handle, const char *fname)
> -{
> -   union {
> -      void *v;
> -      GenericFunc f;
> -   } u;
> -#if defined(__blrts)
> -   u.v = NULL;
> -#elif defined(__DJGPP__)
> -   /* need '_' prefix on symbol names */
> -   char fname2[1000];
> -   fname2[0] = '_';
> -   strncpy(fname2 + 1, fname, 998);
> -   fname2[999] = 0;
> -   u.v = dlsym(handle, fname2);
> -#elif defined(HAVE_DLOPEN)
> -   u.v = dlsym(handle, fname);
> -#elif defined(__MINGW32__)
> -   u.v = (void *) GetProcAddress(handle, fname);
> -#else
> -   u.v = NULL;
> -#endif
> -   return u.f;
> -}
> -
> -
> -/**
> - * Wrapper for dlclose().
> - */
> -void
> -_mesa_dlclose(void *handle)
> -{
> -#if defined(__blrts)
> -   (void) handle;
> -#elif defined(HAVE_DLOPEN)
> -   dlclose(handle);
> -#elif defined(__MINGW32__)
> -   FreeLibrary(handle);
> -#else
> -   (void) handle;
> -#endif
> -}
> -
> -
> -
> diff --git a/src/mesa/main/dlopen.h b/src/mesa/main/dlopen.h
> index 9895a22..a5366a1 100644
> --- a/src/mesa/main/dlopen.h
> +++ b/src/mesa/main/dlopen.h
> @@ -25,18 +25,85 @@
>  #ifndef DLOPEN_H
>  #define DLOPEN_H
>  
> +/**
> + * Wrapper functions for dlopen(), dlsym(), dlclose().
> + * Note that the #ifdef tests for various environments should be expanded.
> + */
>  
> -typedef void (*GenericFunc)(void);
> -
> +#if defined(HAVE_DLOPEN)
> +#include <dlfcn.h>
> +#endif
> +#if defined(_WIN32)
> +#include <windows.h>
> +#endif
>  
> -extern void *
> -_mesa_dlopen(const char *libname, int flags);
> +typedef void (*GenericFunc)(void);
>  
> -extern GenericFunc
> -_mesa_dlsym(void *handle, const char *fname);
> +/**
> + * Wrapper for dlopen().
> + * Note that 'flags' isn't used at this time.
> + */
> +static inline void *
> +_mesa_dlopen(const char *libname, int flags)
> +{
> +#if defined(__blrts)
> +   return NULL;
> +#elif defined(HAVE_DLOPEN)
> +   flags = RTLD_LAZY | RTLD_GLOBAL; /* Overriding flags at this time */
> +   return dlopen(libname, flags);
> +#elif defined(__MINGW32__)
> +   return LoadLibraryA(libname);
> +#else
> +   return NULL;
> +#endif
> +}
>  
> -extern void
> -_mesa_dlclose(void *handle);
> +/**
> + * Wrapper for dlsym() that does a cast to a generic function type,
> + * rather than a void *.  This reduces the number of warnings that are
> + * generated.
> + */
> +static inline GenericFunc
> +_mesa_dlsym(void *handle, const char *fname)
> +{
> +   union {
> +      void *v;
> +      GenericFunc f;
> +   } u;
> +#if defined(__blrts)
> +   u.v = NULL;
> +#elif defined(__DJGPP__)
> +   /* need '_' prefix on symbol names */
> +   char fname2[1000];
> +   fname2[0] = '_';
> +   strncpy(fname2 + 1, fname, 998);
> +   fname2[999] = 0;
> +   u.v = dlsym(handle, fname2);
> +#elif defined(HAVE_DLOPEN)
> +   u.v = dlsym(handle, fname);
> +#elif defined(__MINGW32__)
> +   u.v = (void *) GetProcAddress(handle, fname);
> +#else
> +   u.v = NULL;
> +#endif
> +   return u.f;
> +}
>  
> +/**
> + * Wrapper for dlclose().
> + */
> +static inline void
> +_mesa_dlclose(void *handle)
> +{
> +#if defined(__blrts)
> +   (void) handle;
> +#elif defined(HAVE_DLOPEN)
> +   dlclose(handle);
> +#elif defined(__MINGW32__)
> +   FreeLibrary(handle);
> +#else
> +   (void) handle;
> +#endif
> +}
>  
>  #endif
> diff --git a/src/mesa/sources.mak b/src/mesa/sources.mak
> index ee260cb..965222c 100644
> --- a/src/mesa/sources.mak
> +++ b/src/mesa/sources.mak
> @@ -32,7 +32,6 @@ MAIN_FILES = \
>  	$(SRCDIR)main/debug.c \
>  	$(SRCDIR)main/depth.c \
>  	$(SRCDIR)main/dlist.c \
> -	$(SRCDIR)main/dlopen.c \
>  	$(SRCDIR)main/drawpix.c \
>  	$(SRCDIR)main/drawtex.c \
>  	$(SRCDIR)main/enable.c \
> 


-- 

// Tapani


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 554 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20120823/070bc0cf/attachment-0001.pgp>


More information about the mesa-dev mailing list