< prev index next >
src/os/solaris/vm/os_solaris.cpp
Print this page
*** 2264,2284 ****
void* os::user_handler() {
return CAST_FROM_FN_PTR(void*, UserHandler);
}
! class SolarisSemaphore : public os::PosixSemaphore {
! public:
! SolarisSemaphore(uint value = 0) : os::PosixSemaphore(value) {}
!
! bool timedwait(unsigned int sec, int nsec) {
struct timespec ts;
unpackTime(&ts, false, (sec * NANOSECS_PER_SEC) + nsec);
! return os::PosixSemaphore::timedwait(ts);
! }
! };
extern "C" {
typedef void (*sa_handler_t)(int);
typedef void (*sa_sigaction_t)(int, siginfo_t *, void *);
}
--- 2264,2279 ----
void* os::user_handler() {
return CAST_FROM_FN_PTR(void*, UserHandler);
}
! struct timespec os::PosixSemaphore::create_timespec(unsigned int sec, int nsec) {
struct timespec ts;
unpackTime(&ts, false, (sec * NANOSECS_PER_SEC) + nsec);
! return ts;
! }
extern "C" {
typedef void (*sa_handler_t)(int);
typedef void (*sa_sigaction_t)(int, siginfo_t *, void *);
}
*** 3673,3683 ****
static void suspend_save_context(OSThread *osthread, ucontext_t* context) {
osthread->set_ucontext(context);
}
! static SolarisSemaphore sr_semaphore;
void os::Solaris::SR_handler(Thread* thread, ucontext_t* uc) {
// Save and restore errno to avoid confusing native code with EINTR
// after sigsuspend.
int old_errno = errno;
--- 3668,3678 ----
static void suspend_save_context(OSThread *osthread, ucontext_t* context) {
osthread->set_ucontext(context);
}
! static os::PosixSemaphore sr_semaphore;
void os::Solaris::SR_handler(Thread* thread, ucontext_t* uc) {
// Save and restore errno to avoid confusing native code with EINTR
// after sigsuspend.
int old_errno = errno;
< prev index next >