< prev index next >

src/os/linux/vm/os_linux.cpp

Print this page

        

*** 2391,2405 **** void* os::user_handler() { return CAST_FROM_FN_PTR(void*, UserHandler); } ! class LinuxSemaphore : public os::PosixSemaphore { ! public: ! LinuxSemaphore(uint value = 0) : os::PosixSemaphore(value) {} ! ! bool timedwait(unsigned int sec, int nsec) { struct timespec ts; // Semaphore's are always associated with CLOCK_REALTIME os::Linux::clock_gettime(CLOCK_REALTIME, &ts); // see unpackTime for discussion on overflow checking if (sec >= MAX_SECS) { --- 2391,2401 ---- 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; // Semaphore's are always associated with CLOCK_REALTIME os::Linux::clock_gettime(CLOCK_REALTIME, &ts); // see unpackTime for discussion on overflow checking if (sec >= MAX_SECS) {
*** 2412,2424 **** ts.tv_nsec -= NANOSECS_PER_SEC; ++ts.tv_sec; // note: this must be <= max_secs } } ! return os::PosixSemaphore::timedwait(ts); ! } ! }; extern "C" { typedef void (*sa_handler_t)(int); typedef void (*sa_sigaction_t)(int, siginfo_t *, void *); } --- 2408,2419 ---- ts.tv_nsec -= NANOSECS_PER_SEC; ++ts.tv_sec; // note: this must be <= max_secs } } ! return ts; ! } extern "C" { typedef void (*sa_handler_t)(int); typedef void (*sa_sigaction_t)(int, siginfo_t *, void *); }
*** 2453,2463 **** // a counter for each possible signal value static volatile jint pending_signals[NSIG+1] = { 0 }; // Linux(POSIX) specific hand shaking semaphore. static sem_t sig_sem; ! static LinuxSemaphore sr_semaphore; void os::signal_init_pd() { // Initialize signal structures ::memset((void*)pending_signals, 0, sizeof(pending_signals)); --- 2448,2458 ---- // a counter for each possible signal value static volatile jint pending_signals[NSIG+1] = { 0 }; // Linux(POSIX) specific hand shaking semaphore. static sem_t sig_sem; ! static os::PosixSemaphore sr_semaphore; void os::signal_init_pd() { // Initialize signal structures ::memset((void*)pending_signals, 0, sizeof(pending_signals));
< prev index next >