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();} while(0) 66 #if defined(MHD_PTHREAD_MUTEX_) 67 typedef pthread_mutex_t MHD_mutex_;
68 #elif defined(MHD_W32_MUTEX_) 69 typedef CRITICAL_SECTION MHD_mutex_;
72 #if defined(MHD_PTHREAD_MUTEX_) 78 #define MHD_mutex_init_(pmutex) (!(pthread_mutex_init((pmutex), NULL))) 79 #elif defined(MHD_W32_MUTEX_) 85 #define MHD_mutex_init_(pmutex) (InitializeCriticalSectionAndSpinCount((pmutex),16)) 88 #if defined(MHD_PTHREAD_MUTEX_) 94 #define MHD_mutex_destroy_(pmutex) (!(pthread_mutex_destroy((pmutex)))) 95 #elif defined(MHD_W32_MUTEX_) 101 #define MHD_mutex_destroy_(pmutex) (DeleteCriticalSection((pmutex)), !0) 109 #define MHD_mutex_destroy_chk_(pmutex) do { \ 110 if (!MHD_mutex_destroy_(pmutex)) \ 111 MHD_PANIC(_("Failed to destroy mutex.\n")); \ 115 #if defined(MHD_PTHREAD_MUTEX_) 123 #define MHD_mutex_lock_(pmutex) (!(pthread_mutex_lock((pmutex)))) 124 #elif defined(MHD_W32_MUTEX_) 132 #define MHD_mutex_lock_(pmutex) (EnterCriticalSection((pmutex)), !0) 142 #define MHD_mutex_lock_chk_(pmutex) do { \ 143 if (!MHD_mutex_lock_(pmutex)) \ 144 MHD_PANIC(_("Failed to lock mutex.\n")); \ 147 #if defined(MHD_PTHREAD_MUTEX_) 153 #define MHD_mutex_unlock_(pmutex) (!(pthread_mutex_unlock((pmutex)))) 154 #elif defined(MHD_W32_MUTEX_) 160 #define MHD_mutex_unlock_(pmutex) (LeaveCriticalSection((pmutex)), !0) 168 #define MHD_mutex_unlock_chk_(pmutex) do { \ 169 if (!MHD_mutex_unlock_(pmutex)) \ 170 MHD_PANIC(_("Failed to unlock mutex.\n")); \ additional automatic macros for MHD_config.h