X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=blobdiff_plain;f=src%2FIOEngine.h;h=411173a82c443283ec77f3f9ac460777be73fc3b;hp=e331ce8457323a1f6957299ef2221f70d3ffb851;hb=3218b969d5dd33bbd8defb30059d666f33284779;hpb=59659c9123e0b56c34f5fa9281566f574365deb5 diff --git a/src/IOEngine.h b/src/IOEngine.h index e331ce8..411173a 100644 --- a/src/IOEngine.h +++ b/src/IOEngine.h @@ -18,6 +18,33 @@ #define _IOEngine_h #include "IOHandler.h" +#ifdef HAVE_PTHREAD_H +#include +#ifdef PTHREAD_MUTEX_RECURSIVE_NP +#define PTHREAD_MUTEX_RECURSIVE_VAL PTHREAD_MUTEX_RECURSIVE_NP +#else +#define PTHREAD_MUTEX_RECURSIVE_VAL PTHREAD_MUTEX_RECURSIVE +#endif +#define IOTHREAD_MUTEX_INIT(var) { \ + pthread_mutexattr_t mutex_attr; \ + pthread_mutexattr_init(&mutex_attr);\ + pthread_mutexattr_settype(&mutex_attr, PTHREAD_MUTEX_RECURSIVE_VAL);\ + pthread_mutex_init(&var, &mutex_attr); \ +} +#ifdef ENABLE_MUTEX_DEBUG +#include "mutexDebug.h" +#define IOSYNCHRONIZE(var) xmutex(1, &var, __FILE__, __LINE__); pthread_mutex_lock(&var) +#define IODESYNCHRONIZE(var) xmutex(0, &var, __FILE__, __LINE__); pthread_mutex_unlock(&var) +#else +#define IOSYNCHRONIZE(var) pthread_mutex_lock(&var) +#define IODESYNCHRONIZE(var) pthread_mutex_unlock(&var) +#endif +#else +#define IOTHREAD_MUTEX_INIT(var) +#define IOSYNCHRONIZE(var) +#define IODESYNCHRONIZE(var) +#endif + struct IODescriptor; enum IOType; enum IOStatus;