diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2010-07-03 18:37:19 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2010-07-03 18:37:19 +0200 |
commit | 671f50958c0cdeebb528df0e8c54a281eaddf9dd (patch) | |
tree | a53e5e7ef8a40e7571940f54446ae818e590f37c | |
parent | 539776d5e5e6725024e5ba619c48980b089f3415 (diff) | |
download | gnutls-671f50958c0cdeebb528df0e8c54a281eaddf9dd.tar.gz |
Locks were converted to be in align with posix locks to easier wrap around them.
-rw-r--r-- | lib/gcrypt/init.c | 22 | ||||
-rw-r--r-- | lib/includes/gnutls/gnutls.h.in | 6 | ||||
-rw-r--r-- | lib/locks.c | 39 | ||||
-rw-r--r-- | lib/pakchois/pakchois.c | 3 |
4 files changed, 29 insertions, 41 deletions
diff --git a/lib/gcrypt/init.c b/lib/gcrypt/init.c index 4e2a065b1b..175cbd0acd 100644 --- a/lib/gcrypt/init.c +++ b/lib/gcrypt/init.c @@ -43,22 +43,6 @@ static struct gcry_thread_cbs gct = { .recvmsg = NULL, }; -static int wrap_gcry_mutex_lock(void** m) -{ - return gnutls_mutex_lock(*m); -} - -static int wrap_gcry_mutex_unlock(void** m) -{ - return gnutls_mutex_unlock(*m); -} - -static int wrap_gcry_mutex_deinit(void** m) -{ - gnutls_mutex_deinit(*m); - return 0; -} - int gnutls_crypto_init(void) { /* Initialize libgcrypt if it hasn't already been initialized. */ @@ -69,9 +53,9 @@ int gnutls_crypto_init(void) if (gnutls_mutex_init != NULL) { gct.mutex_init = gnutls_mutex_init; - gct.mutex_destroy = wrap_gcry_mutex_deinit; - gct.mutex_lock = wrap_gcry_mutex_lock; - gct.mutex_unlock = wrap_gcry_mutex_unlock; + gct.mutex_destroy = gnutls_mutex_deinit; + gct.mutex_lock = gnutls_mutex_lock; + gct.mutex_unlock = gnutls_mutex_unlock; gcry_control (GCRYCTL_SET_THREAD_CBS, &gct); } diff --git a/lib/includes/gnutls/gnutls.h.in b/lib/includes/gnutls/gnutls.h.in index 6ff039b247..95554320a2 100644 --- a/lib/includes/gnutls/gnutls.h.in +++ b/lib/includes/gnutls/gnutls.h.in @@ -1123,9 +1123,9 @@ extern "C" void gnutls_global_deinit (void); typedef int (*mutex_init_func)(void** mutex); - typedef int (*mutex_lock_func)(void* mutex); - typedef int (*mutex_unlock_func)(void* mutex); - typedef void (*mutex_deinit_func)(void* mutex); + typedef int (*mutex_lock_func)(void** mutex); + typedef int (*mutex_unlock_func)(void** mutex); + typedef int (*mutex_deinit_func)(void** mutex); void gnutls_global_set_mutex(mutex_init_func init, mutex_deinit_func, mutex_lock_func, mutex_unlock_func); diff --git a/lib/locks.c b/lib/locks.c index 7875119fb0..30ffd5302e 100644 --- a/lib/locks.c +++ b/lib/locks.c @@ -51,21 +51,23 @@ static int gnutls_system_mutex_init (void **priv) return 0; } -static void gnutls_system_mutex_deinit (void *priv) +static int gnutls_system_mutex_deinit (void **priv) { - DeleteCriticalSection(priv); - free(priv); + DeleteCriticalSection((CRITICAL_SECTION*)*priv); + free(*priv); + + return 0; } -static int gnutls_system_mutex_lock (void *priv) +static int gnutls_system_mutex_lock (void **priv) { - EnterCriticalSection(priv); + EnterCriticalSection((CRITICAL_SECTION*)*priv); return 0; } -static int gnutls_system_mutex_unlock (void *priv) +static int gnutls_system_mutex_unlock (void **priv) { - LeaveCriticalSection(priv); + LeaveCriticalSection((CRITICAL_SECTION*)*priv); return 0; } @@ -101,15 +103,16 @@ static int gnutls_system_mutex_init (void **priv) return 0; } -static void gnutls_system_mutex_deinit (void *priv) +static int gnutls_system_mutex_deinit (void **priv) { - pthread_mutex_destroy(priv); - free(priv); + pthread_mutex_destroy((pthread_mutex_t*)*priv); + free(*priv); + return 0; } -static int gnutls_system_mutex_lock (void *priv) +static int gnutls_system_mutex_lock (void **priv) { - if (pthread_mutex_lock(priv)) + if (pthread_mutex_lock((pthread_mutex_t*)*priv)) { gnutls_assert(); return GNUTLS_E_LOCKING_ERROR; @@ -118,9 +121,9 @@ static int gnutls_system_mutex_lock (void *priv) return 0; } -static int gnutls_system_mutex_unlock (void *priv) +static int gnutls_system_mutex_unlock (void **priv) { - if (pthread_mutex_unlock(priv)) + if (pthread_mutex_unlock((pthread_mutex_t*)*priv)) { gnutls_assert(); return GNUTLS_E_LOCKING_ERROR; @@ -143,17 +146,17 @@ static int gnutls_system_mutex_init (void **priv) return 0; } -static void gnutls_system_mutex_deinit (void *priv) +static int gnutls_system_mutex_deinit (void **priv) { - return; + return 0; } -static int gnutls_system_mutex_lock (void *priv) +static int gnutls_system_mutex_lock (void **priv) { return 0; } -static int gnutls_system_mutex_unlock (void *priv) +static int gnutls_system_mutex_unlock (void **priv) { return 0; } diff --git a/lib/pakchois/pakchois.c b/lib/pakchois/pakchois.c index a39977e090..45cd130949 100644 --- a/lib/pakchois/pakchois.c +++ b/lib/pakchois/pakchois.c @@ -522,7 +522,8 @@ static void pakchois_destructor(void) static void pakchois_destructor(void) { - gnutls_mutex_deinit(&provider_mutex); + if (provider_mutex != NULL) + gnutls_mutex_deinit(&provider_mutex); } #else #warning need destructor support |