diff --git a/src/mutex.h b/src/mutex.h new file mode 100644 index 000000000..a872231b4 --- /dev/null +++ b/src/mutex.h @@ -0,0 +1,18 @@ +#include "hamlib/config.h" + +#if defined(HAVE_PTHREAD) +#include +#endif + +#ifdef HAVE_PTHREAD +#define MUTEX(var) static pthread_mutex_t var = PTHREAD_MUTEX_INITIALIZER +#define MUTEX_LOCK(var) pthread_mutex_lock(&var) +#define MUTEX_UNLOCK(var) pthread_mutex_unlock(&var) +#else +#warning NOT PTHREAD +#define MUTEX(var) +#define MUTEX_LOCK(var) +#define MUTEX_UNLOCK(var) +#endif + +extern int MUTEX_CHECK(pthread_mutex_t *m); diff --git a/src/rig.c b/src/rig.c index cc4b24073..26b567485 100644 --- a/src/rig.c +++ b/src/rig.c @@ -61,10 +61,7 @@ #include #include #include -#if defined(HAVE_PTHREAD) -#include -#endif - +#include "mutex.h" #include #include "serial.h" @@ -174,17 +171,6 @@ const char hamlib_copyright[231] = /* hamlib 1.2 ABI specifies 231 bytes */ #define LOCK(n) if (rig->state.depth == 1) { rig_debug(RIG_DEBUG_CACHE, "%s: %s\n", n?"lock":"unlock", __func__); rig_lock(rig,n); } -#ifdef HAVE_PTHREAD -#define MUTEX(var) static pthread_mutex_t var = PTHREAD_MUTEX_INITIALIZER -#define MUTEX_LOCK(var) pthread_mutex_lock(&var) -#define MUTEX_UNLOCK(var) pthread_mutex_unlock(&var) -#else -#warning NOT PTHREAD -#define MUTEX(var) -#define MUTEX_LOCK(var) -#define MUTEX_UNLOCK(var) -#endif - MUTEX(morse_mutex); #ifdef HAVE_PTHREAD