54 create( name, size, mustExist, mustNotExist );
68 assert( !( mustExist && mustNotExist ) );
69 if ( mustExist && mustNotExist )
74 else if ( mustNotExist )
76 m_mapFile = CreateFileMappingA( INVALID_HANDLE_VALUE, NULL,
77 PAGE_READWRITE, 0, size, name );
78 if ( GetLastError() == ERROR_ALREADY_EXISTS )
82 m_mapFile = CreateFileMappingA( INVALID_HANDLE_VALUE, NULL,
83 PAGE_READWRITE, 0, size, name );
92 else if ( mustNotExist )
94 m_mapFile = shm_open( name, O_RDWR | O_CREAT | O_EXCL, S_IRWXU );
100 m_mapFile = shm_open( name, O_RDWR | O_CREAT, S_IRWXU );
101 if ( ftruncate(
m_mapFile, size ) == -1 )
107 m_name =
new char[strlen( name ) + 1];
167 create( name, aquireOnCreate );
178 strncpy( mutexName + 1, name, 250 );
179 mutexName[250] =
'\0';
180 m_mutex = sem_open( mutexName, O_CREAT, S_IRWXU, 1 );
187 DWORD result = WaitForSingleObject(
m_mutex, INFINITE );
188 m_haveLock = ( result == WAIT_OBJECT_0 || result == WAIT_ABANDONED );
200 DWORD result = WaitForSingleObject(
m_mutex, millisecs );
201 m_haveLock = ( result == WAIT_OBJECT_0 || result == WAIT_ABANDONED );
void create(const char *name, bool aquireOnCreate=false)
void create(const char *name, PLINT size, bool mustExist, bool mustNotExist)