summaryrefslogtreecommitdiff
path: root/random/random-fips.c
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2014-01-09 19:14:09 +0100
committerWerner Koch <wk@gnupg.org>2014-01-16 17:23:21 +0100
commitcfc151ba637200e4fc05d9481a8df2071b2f9a47 (patch)
treef1a1c3e1fc81663d622dd5189462a249bd01eac3 /random/random-fips.c
parent49edeebb43174865cf4fa2c170a42a8e4274c4f0 (diff)
downloadlibgcrypt-cfc151ba637200e4fc05d9481a8df2071b2f9a47.tar.gz
Replace ath based mutexes by gpgrt based locks.
* configure.ac (NEED_GPG_ERROR_VERSION): Require 1.13. (gl_LOCK): Remove. * src/ath.c, src/ath.h: Remove. Remove from all files. Replace all mutexes by gpgrt based statically initialized locks. * src/global.c (global_init): Remove ath_init. (_gcry_vcontrol): Make ath install a dummy function. (print_config): Remove threads info line. * doc/gcrypt.texi: Simplify the multi-thread related documentation. -- The current code does only work on ELF systems with weak symbol support. In particular no locks were used under Windows. With the new gpgrt_lock functions from the soon to be released libgpg-error 1.13 we have a better portable scheme which also allows for static initialized mutexes. Signed-off-by: Werner Koch <wk@gnupg.org>
Diffstat (limited to 'random/random-fips.c')
-rw-r--r--random/random-fips.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/random/random-fips.c b/random/random-fips.c
index d00825e2..0a763628 100644
--- a/random/random-fips.c
+++ b/random/random-fips.c
@@ -66,13 +66,12 @@
#include "g10lib.h"
#include "random.h"
#include "rand-internal.h"
-#include "ath.h"
/* This is the lock we use to serialize access to this RNG. The extra
integer variable is only used to check the locking state; that is,
it is not meant to be thread-safe but merely as a failsafe feature
to assert proper locking. */
-static ath_mutex_t fips_rng_lock;
+GPGRT_LOCK_DEFINE (fips_rng_lock);
static int fips_rng_is_locked;
@@ -190,15 +189,11 @@ static void
basic_initialization (void)
{
static int initialized;
- int my_errno;
if (initialized)
return;
initialized = 1;
- my_errno = ath_mutex_init (&fips_rng_lock);
- if (my_errno)
- log_fatal ("failed to create the RNG lock: %s\n", strerror (my_errno));
fips_rng_is_locked = 0;
/* Make sure that we are still using the values we have
@@ -214,11 +209,11 @@ basic_initialization (void)
static void
lock_rng (void)
{
- int my_errno;
+ gpg_err_code_t rc;
- my_errno = ath_mutex_lock (&fips_rng_lock);
- if (my_errno)
- log_fatal ("failed to acquire the RNG lock: %s\n", strerror (my_errno));
+ rc = gpgrt_lock_lock (&fips_rng_lock);
+ if (rc)
+ log_fatal ("failed to acquire the RNG lock: %s\n", gpg_strerror (rc));
fips_rng_is_locked = 1;
}
@@ -227,12 +222,12 @@ lock_rng (void)
static void
unlock_rng (void)
{
- int my_errno;
+ gpg_err_code_t rc;
fips_rng_is_locked = 0;
- my_errno = ath_mutex_unlock (&fips_rng_lock);
- if (my_errno)
- log_fatal ("failed to release the RNG lock: %s\n", strerror (my_errno));
+ rc = gpgrt_lock_unlock (&fips_rng_lock);
+ if (rc)
+ log_fatal ("failed to release the RNG lock: %s\n", gpg_strerror (rc));
}
static void