42 #if defined(MHD_USE_W32_THREADS) 43 # define MHD_W32_MUTEX_ 1 44 # ifndef WIN32_LEAN_AND_MEAN 45 # define WIN32_LEAN_AND_MEAN 1 48 #elif defined(HAVE_PTHREAD_H) && defined(MHD_USE_POSIX_THREADS) 49 # define MHD_PTHREAD_MUTEX_ 1 52 # define HAVE_CONFIG_H 1 54 # error No base mutex API is available. 61 # define MHD_PANIC(msg) do { fprintf (stderr, \ 62 "Abnormal termination at %d line in file %s: %s\n", \ 63 (int) __LINE__, __FILE__, msg); abort (); \ 67 #if defined(MHD_PTHREAD_MUTEX_) 68 typedef pthread_mutex_t MHD_mutex_;
69 #elif defined(MHD_W32_MUTEX_) 70 typedef CRITICAL_SECTION MHD_mutex_;
73 #if defined(MHD_PTHREAD_MUTEX_) 79 #define MHD_mutex_init_(pmutex) (! (pthread_mutex_init ((pmutex), NULL))) 80 #elif defined(MHD_W32_MUTEX_) 86 #define MHD_mutex_init_(pmutex) (InitializeCriticalSectionAndSpinCount ( \ 90 #if defined(MHD_PTHREAD_MUTEX_) 91 # if defined(PTHREAD_MUTEX_INITIALIZER) 95 # define MHD_MUTEX_STATIC_DEFN_INIT_(m) static MHD_mutex_ m = \ 96 PTHREAD_MUTEX_INITIALIZER 100 #if defined(MHD_PTHREAD_MUTEX_) 106 #define MHD_mutex_destroy_(pmutex) (! (pthread_mutex_destroy ((pmutex)))) 107 #elif defined(MHD_W32_MUTEX_) 113 #define MHD_mutex_destroy_(pmutex) (DeleteCriticalSection ((pmutex)), ! 0) 121 #define MHD_mutex_destroy_chk_(pmutex) do { \ 122 if (! MHD_mutex_destroy_ (pmutex)) \ 123 MHD_PANIC (_ ("Failed to destroy mutex.\n")); \ 127 #if defined(MHD_PTHREAD_MUTEX_) 135 #define MHD_mutex_lock_(pmutex) (! (pthread_mutex_lock ((pmutex)))) 136 #elif defined(MHD_W32_MUTEX_) 144 #define MHD_mutex_lock_(pmutex) (EnterCriticalSection ((pmutex)), ! 0) 154 #define MHD_mutex_lock_chk_(pmutex) do { \ 155 if (! MHD_mutex_lock_ (pmutex)) \ 156 MHD_PANIC (_ ("Failed to lock mutex.\n")); \ 159 #if defined(MHD_PTHREAD_MUTEX_) 165 #define MHD_mutex_unlock_(pmutex) (! (pthread_mutex_unlock ((pmutex)))) 166 #elif defined(MHD_W32_MUTEX_) 172 #define MHD_mutex_unlock_(pmutex) (LeaveCriticalSection ((pmutex)), ! 0) 180 #define MHD_mutex_unlock_chk_(pmutex) do { \ 181 if (! MHD_mutex_unlock_ (pmutex)) \ 182 MHD_PANIC (_ ("Failed to unlock mutex.\n")); \ additional automatic macros for MHD_config.h