< prev index next >
src/os/windows/vm/os_windows.cpp
Print this page
*** 1897,1907 ****
}
Semaphore::Semaphore(uint value, uint max) {
_semaphore = ::CreateSemaphore(NULL, value, max, NULL);
! guarantee(_semaphore != NULL, err_msg("CreateSemaphore failed: %ld", GetLastError()));
}
Semaphore::~Semaphore() {
if (_semaphore != NULL) {
::CloseHandle(_semaphore);
--- 1897,1907 ----
}
Semaphore::Semaphore(uint value, uint max) {
_semaphore = ::CreateSemaphore(NULL, value, max, NULL);
! assert(_semaphore != NULL, err_msg("CreateSemaphore failed: %ld", GetLastError()));
}
Semaphore::~Semaphore() {
if (_semaphore != NULL) {
::CloseHandle(_semaphore);
*** 1909,1938 ****
}
void Semaphore::signal(uint count) {
BOOL ret = ::ReleaseSemaphore(_semaphore, count, NULL);
! guarantee(ret != 0, err_msg("ReleaseSemaphore failed: %d", GetLastError()));
}
void Semaphore::signal() {
signal(1);
}
void Semaphore::wait() {
DWORD ret = ::WaitForSingleObject(_semaphore, INFINITE);
! guarantee(ret == WAIT_OBJECT_0, err_msg("WaitForSingleObject failed: %d", GetLastError()));
! }
!
! bool Semaphore::trywait() {
! Unimplemented();
! return false;
! }
!
! bool Semaphore::timedwait(unsigned int sec, int nsec) {
! Unimplemented();
! return false;
}
// sun.misc.Signal
// NOTE that this is a workaround for an apparent kernel bug where if
// a signal handler for SIGBREAK is installed then that signal handler
--- 1909,1928 ----
}
void Semaphore::signal(uint count) {
BOOL ret = ::ReleaseSemaphore(_semaphore, count, NULL);
! assert(ret != 0, err_msg("ReleaseSemaphore failed: %d", GetLastError()));
}
void Semaphore::signal() {
signal(1);
}
void Semaphore::wait() {
DWORD ret = ::WaitForSingleObject(_semaphore, INFINITE);
! assert(ret == WAIT_OBJECT_0, err_msg("WaitForSingleObject failed: %d", GetLastError()));
}
// sun.misc.Signal
// NOTE that this is a workaround for an apparent kernel bug where if
// a signal handler for SIGBREAK is installed then that signal handler
< prev index next >