|
From: Marek P. <ma...@us...> - 2001-08-25 23:27:46
|
Update of /cvsroot/javaprofiler/library/src/commun3
In directory usw-pr-cvs1:/tmp/cvs-serv12893/src/commun3
Modified Files:
semaphore.h sharedMemory.h
Log Message:
unix implementation of shared memory communication
(semaphore, shared memory)
Index: semaphore.h
===================================================================
RCS file: /cvsroot/javaprofiler/library/src/commun3/semaphore.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** semaphore.h 2001/08/23 23:57:31 1.2
--- semaphore.h 2001/08/25 23:27:43 1.3
***************
*** 13,17 ****
HANDLE _semid;
#else
! #error FIXME - not implemented yet !!!
#endif
--- 13,21 ----
HANDLE _semid;
#else
! /// unix semaphore identifier
! int _semid;
!
! /// initially locked
! int _initLocked;
#endif
***************
*** 29,33 ****
_semid = CreateSemaphore( NULL, (( locked) ? 0 : 1), 1, name);
#else
! #error FIXME - not implemented yet !!!
#endif
}
--- 33,38 ----
_semid = CreateSemaphore( NULL, (( locked) ? 0 : 1), 1, name);
#else
! _semid = semget( *(key_t*)(const char*)name, 1, 0666 | IPC_CREAT);
! _initLocked = locked;
#endif
}
***************
*** 39,43 ****
CloseHandle( _semid);
#else
- #error FIXME - not implemented yet !!!
#endif
}
--- 44,47 ----
***************
*** 54,58 ****
WaitForSingleObject( _semid, INFINITE);
#else
! #error FIXME - not implemented yet !!!
#endif
}
--- 58,71 ----
WaitForSingleObject( _semid, INFINITE);
#else
! if( _initLocked) {
!
! static sembuf sop = { 0, -1, SEM_UNDO};
! semop( _semid, &sop, 1);
! }
! else {
!
! static sembuf sop[2] = { 0, 0, 0, 0, 1, SEM_UNDO};
! semop( _semid, sop, 2);
! }
#endif
}
***************
*** 68,72 ****
ReleaseSemaphore( _semid, 1, NULL);
#else
! #error FIXME - not implemented yet !!!
#endif
}
--- 81,94 ----
ReleaseSemaphore( _semid, 1, NULL);
#else
! if( _initLocked) {
!
! static sembuf sop = { 0, 1, SEM_UNDO};
! semop( _semid, &sop, 1);
! }
! else {
!
! static sembuf sop = { 0, -1, SEM_UNDO | IPC_NOWAIT};
! semop( _semid, &sop, 1);
! }
#endif
}
***************
*** 87,93 ****
if( rc == WAIT_TIMEOUT) return 0;
#else
! #error FIXME - not implemented yet !!!
! #endif
return 1;
}
--- 109,123 ----
if( rc == WAIT_TIMEOUT) return 0;
#else
! if( _initLocked) {
+ static sembuf sop = { 0, -1, SEM_UNDO | IPC_NOWAIT};
+ if( semop( _semid, &sop, 1)) return 0;
+ }
+ else {
+
+ static sembuf sop[2] = { 0, 0, IPC_NOWAIT, 0, 1, SEM_UNDO};
+ if( semop( _semid, sop, 2)) return 0;
+ }
+ #endif
return 1;
}
***************
*** 95,96 ****
--- 125,127 ----
#endif // _SEMAPHORE_H_
+
Index: sharedMemory.h
===================================================================
RCS file: /cvsroot/javaprofiler/library/src/commun3/sharedMemory.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** sharedMemory.h 2001/08/12 07:35:31 1.2
--- sharedMemory.h 2001/08/25 23:27:43 1.3
***************
*** 16,20 ****
LPVOID _address;
#else
! #error FIXME - not implemented yet !!!
#endif
--- 16,24 ----
LPVOID _address;
#else
! /// unix shared memory identifier
! int _shmid;
!
! /// unix shared memory address
! void* _address;
#endif
***************
*** 39,43 ****
_address = MapViewOfFile( _shmid, FILE_MAP_ALL_ACCESS, 0, 0, 0);
#else
! #error FIXME - not implemented yet !!!
#endif
}
--- 43,49 ----
_address = MapViewOfFile( _shmid, FILE_MAP_ALL_ACCESS, 0, 0, 0);
#else
! _size = IProf::COMMUN_SHMEM_SIZE;
! _shmid = shmget( *(key_t*)(const char*)name, _size, 0666 | IPC_CREAT);
! _address = shmat( _shmid, NULL, 0666);
#endif
}
***************
*** 53,57 ****
CloseHandle( _shmid);
#else
! #error FIXME - not implemented yet !!!
#endif
}
--- 59,63 ----
CloseHandle( _shmid);
#else
! shmdt( _address);
#endif
}
***************
*** 73,74 ****
--- 79,81 ----
#endif // _SHARED_MEMORY_H_
+
|