diff options
author | Werner Koch <wk@gnupg.org> | 2017-11-29 20:22:06 +0100 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2017-11-29 20:22:06 +0100 |
commit | adc786d034b63176b941a1ef8d996acbf8d0ea5d (patch) | |
tree | b19d82491cc7666f18cb44d2f7458f2f28fbe936 /src/w32-lock.c | |
parent | 1865c0ba1769b407a3c504f1ab0a4278704a9fc1 (diff) | |
download | libgpg-error-adc786d034b63176b941a1ef8d996acbf8d0ea5d.tar.gz |
core: Unify syscall_clamp functions.
* src/estream.c (_gpgrt_set_syscall_clamp)
(_gpgrt_get_syscall_clamp): Move to ...
* src/syscall-clamp.c: new file.
(_gpgrt_pre_syscall, _gpgrt_post_syscall): New.
* src/Makefile.am (libgpg_error_la_SOURCES): Add that file.
* src/estream.c: Replace the syscall wrapper with the new functions.
* src/posix-lock.c: Ditto.
* src/w32-lock.c: Ditto.
* src/posix-thread.c: Ditto.
* src/w32-thread.c: Ditto.
Signed-off-by: Werner Koch <wk@gnupg.org>
Diffstat (limited to 'src/w32-lock.c')
-rw-r--r-- | src/w32-lock.c | 31 |
1 files changed, 5 insertions, 26 deletions
diff --git a/src/w32-lock.c b/src/w32-lock.c index 51b13a1..a55f932 100644 --- a/src/w32-lock.c +++ b/src/w32-lock.c @@ -29,34 +29,15 @@ #include <stdio.h> #include <string.h> #include <errno.h> -#include <gpg-error.h> #define WIN32_LEAN_AND_MEAN #include <windows.h> +#include "gpgrt-int.h" #include "lock.h" #include "w32-lock-obj.h" -/* - * Functions called before and after blocking syscalls. - * gpgrt_set_syscall_clamp is used to set them. - */ -static void (*pre_lock_func)(void); -static void (*post_lock_func)(void); - - -/* Helper to set the clamp functions. This is called as a helper from - * _gpgrt_set_syscall_clamp to keep the function pointers local. */ -void -_gpgrt_lock_set_lock_clamp (void (*pre)(void), void (*post)(void)) -{ - pre_lock_func = pre; - post_lock_func = post; -} - - - static _gpgrt_lock_t * get_lock_object (gpgrt_lock_t *lockhd) { @@ -112,7 +93,7 @@ _gpgrt_lock_lock (gpgrt_lock_t *lockhd) and thus fall into the wait loop below. We ignore that STARTED may in theory overflow if this thread starves for too long. */ - gpgrt_lock_init (lockhd); + _gpgrt_lock_init (lockhd); } else { @@ -121,11 +102,9 @@ _gpgrt_lock_lock (gpgrt_lock_t *lockhd) } } - if (pre_lock_func) - pre_lock_func (); + _gpgrt_pre_syscall (); EnterCriticalSection (&lock->csec); - if (post_lock_func) - post_lock_func (); + _gpgrt_post_syscall (); return 0; } @@ -139,7 +118,7 @@ _gpgrt_lock_trylock (gpgrt_lock_t *lockhd) { if (!InterlockedIncrement (&lock->started)) { - gpgrt_lock_init (lockhd); + _gpgrt_lock_init (lockhd); } else { |