[Mesa-dev] [PATCH 2/2] glapi: remove u_mutex wrapper code, use c99 thread mutexes directly

Chia-I Wu olvaffe at gmail.com
Wed Mar 5 19:37:52 PST 2014


On Thu, Mar 6, 2014 at 7:06 AM, Brian Paul <brianp at vmware.com> wrote:
> ---
>  src/mapi/mapi.c      |   10 +++++-----
>  src/mapi/stub.c      |    6 +++---
>  src/mapi/u_current.c |    6 +++---
>  src/mapi/u_execmem.c |    6 +++---
>  src/mapi/u_thread.h  |   10 ----------
>  5 files changed, 14 insertions(+), 24 deletions(-)
>
> diff --git a/src/mapi/mapi.c b/src/mapi/mapi.c
> index 56f209b..8d0baca 100644
> --- a/src/mapi/mapi.c
> +++ b/src/mapi/mapi.c
> @@ -72,15 +72,15 @@ get_stub(const char *name, const struct mapi_stub *alias)
>  void
>  mapi_init(const char *spec)
>  {
> -   u_mutex_declare_static(mutex);
> +   static mtx_t mutex = _MTX_INITIALIZER_NP;
>     const char *p;
>     int ver, count;
>
> -   u_mutex_lock(mutex);
> +   mtx_lock(&mutex);
>
>     /* already initialized */
>     if (mapi_num_stubs) {
> -      u_mutex_unlock(mutex);
> +      mtx_unlock(&mutex);
>        return;
>     }
>
> @@ -90,7 +90,7 @@ mapi_init(const char *spec)
>     /* parse version string */
>     ver = atoi(p);
>     if (ver != 1) {
> -      u_mutex_unlock(mutex);
> +      mtx_unlock(&mutex);
>        return;
>     }
>     p += strlen(p) + 1;
> @@ -115,7 +115,7 @@ mapi_init(const char *spec)
>
>     mapi_num_stubs = count;
>
> -   u_mutex_unlock(mutex);
> +   mtx_unlock(&mutex);
>  }
>
>  /**
> diff --git a/src/mapi/stub.c b/src/mapi/stub.c
> index acd2c0a..b5db597 100644
> --- a/src/mapi/stub.c
> +++ b/src/mapi/stub.c
> @@ -126,11 +126,11 @@ stub_add_dynamic(const char *name)
>  struct mapi_stub *
>  stub_find_dynamic(const char *name, int generate)
>  {
> -   u_mutex_declare_static(dynamic_mutex);
> +   static mtx_t dynamic_mutex = _MTX_INITIALIZER_NP PTHREAD_MUTEX_INITIALIZER;
PTHREAD_MUTEX_INITIALIZER should be dropped.  With that fixed,

Reviewed-by: Chia-I Wu <olv at lunarg.com>

>     struct mapi_stub *stub = NULL;
>     int count, i;
>
> -   u_mutex_lock(dynamic_mutex);
> +   mtx_lock(&dynamic_mutex);
>
>     if (generate)
>        assert(!stub_find_public(name));
> @@ -147,7 +147,7 @@ stub_find_dynamic(const char *name, int generate)
>     if (generate && !stub)
>           stub = stub_add_dynamic(name);
>
> -   u_mutex_unlock(dynamic_mutex);
> +   mtx_unlock(&dynamic_mutex);
>
>     return stub;
>  }
> diff --git a/src/mapi/u_current.c b/src/mapi/u_current.c
> index 0721338..9c3537a 100644
> --- a/src/mapi/u_current.c
> +++ b/src/mapi/u_current.c
> @@ -144,7 +144,7 @@ u_current_init_tsd(void)
>  /**
>   * Mutex for multithread check.
>   */
> -u_mutex_declare_static(ThreadCheckMutex);
> +static mtx_t ThreadCheckMutex = _MTX_INITIALIZER_NP;
>
>  /**
>   * We should call this periodically from a function such as glXMakeCurrent
> @@ -159,7 +159,7 @@ u_current_init(void)
>     if (ThreadSafe)
>        return;
>
> -   u_mutex_lock(ThreadCheckMutex);
> +   mtx_lock(&ThreadCheckMutex);
>     if (firstCall) {
>        u_current_init_tsd();
>
> @@ -171,7 +171,7 @@ u_current_init(void)
>        u_current_set(NULL);
>        u_current_set_user(NULL);
>     }
> -   u_mutex_unlock(ThreadCheckMutex);
> +   mtx_unlock(&ThreadCheckMutex);
>  }
>
>  #else
> diff --git a/src/mapi/u_execmem.c b/src/mapi/u_execmem.c
> index 3573652..ac1cae0 100644
> --- a/src/mapi/u_execmem.c
> +++ b/src/mapi/u_execmem.c
> @@ -39,7 +39,7 @@
>
>  #define EXEC_MAP_SIZE (4*1024)
>
> -u_mutex_declare_static(exec_mutex);
> +static mtx_t exec_mutex = _MTX_INITIALIZER_NP;
>
>  static unsigned int head = 0;
>
> @@ -123,7 +123,7 @@ u_execmem_alloc(unsigned int size)
>  {
>     void *addr = NULL;
>
> -   u_mutex_lock(exec_mutex);
> +   mtx_lock(&exec_mutex);
>
>     if (!init_map())
>        goto bail;
> @@ -137,7 +137,7 @@ u_execmem_alloc(unsigned int size)
>     head += size;
>
>  bail:
> -   u_mutex_unlock(exec_mutex);
> +   mtx_unlock(&exec_mutex);
>
>     return addr;
>  }
> diff --git a/src/mapi/u_thread.h b/src/mapi/u_thread.h
> index 78f2269..57c3b07 100644
> --- a/src/mapi/u_thread.h
> +++ b/src/mapi/u_thread.h
> @@ -79,16 +79,6 @@ struct u_tsd {
>     unsigned initMagic;
>  };
>
> -typedef mtx_t u_mutex;
> -
> -#define u_mutex_declare_static(name) \
> -   static u_mutex name = _MTX_INITIALIZER_NP
> -
> -#define u_mutex_init(name)    mtx_init(&(name), mtx_plain)
> -#define u_mutex_destroy(name) mtx_destroy(&(name))
> -#define u_mutex_lock(name)    (void) mtx_lock(&(name))
> -#define u_mutex_unlock(name)  (void) mtx_unlock(&(name))
> -
>
>  static INLINE unsigned long
>  u_thread_self(void)
> --
> 1.7.10.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev



-- 
olv at LunarG.com


More information about the mesa-dev mailing list