41 # define _WIN32_WINNT 0x0400 45 #include "libComAPI.h" 57 static BOOL thisIsNT =
FALSE;
58 static LONG weHaveInitialized = 0;
67 if ( ! weHaveInitialized ) {
70 osInfo.dwOSVersionInfoSize =
sizeof ( OSVERSIONINFO );
71 status = GetVersionEx ( & osInfo );
72 thisIsNT = status && ( osInfo.dwPlatformId == VER_PLATFORM_WIN32_NT );
73 weHaveInitialized = 1;
76 pSem = malloc (
sizeof (*pSem) );
101 CloseHandle ( pSem->
os.
mutex );
115 BOOL success = ReleaseMutex ( pSem->
os.
mutex );
129 DWORD
status = WaitForSingleObject ( pSem->
os.
mutex, INFINITE );
130 if ( status != WAIT_OBJECT_0 ) {
152 if ( status != WAIT_OBJECT_0 ) {
153 if (status == WAIT_TIMEOUT) {
170 printf (
"epicsMutex: win32 critical section at %p\n",
174 printf (
"epicsMutex: win32 mutex at %p\n",
#define assert(exp)
Declare that a condition should be true.
An EPICS-specific replacement for ANSI C's assert.
void epicsMutexOsdUnlock(struct epicsMutexOSD *pmutex)
struct epicsMutexOSD epicsMutexOSD
union epicsMutexOSD::@18 os
epicsMutexLockStatus epicsMutexOsdLock(struct epicsMutexOSD *pmutex)
epicsMutexOSD * epicsMutexOsdCreate(void)
APIs for the epicsMutex mutual exclusion semaphore.
epicsMutexLockStatus epicsMutexOsdTryLock(struct epicsMutexOSD *pmutex)
void epicsMutexOsdDestroy(struct epicsMutexOSD *pmutex)
CRITICAL_SECTION criticalSection
void epicsMutexOsdShow(struct epicsMutexOSD *pmutex, unsigned int level)