src/hotspot/os/posix/os_posix.cpp
changeset 53886 e94ed0236046
parent 53882 ca682d9d8db5
child 53907 c1885a1d62a3
equal deleted inserted replaced
53885:e03bbe023e50 53886:e94ed0236046
  2217   assert_status(status == 0, status, "cond_destroy");
  2217   assert_status(status == 0, status, "cond_destroy");
  2218   status = pthread_mutex_destroy(&_mutex);
  2218   status = pthread_mutex_destroy(&_mutex);
  2219   assert_status(status == 0, status, "mutex_destroy");
  2219   assert_status(status == 0, status, "mutex_destroy");
  2220 }
  2220 }
  2221 
  2221 
  2222 void os::PlatformMonitor::lock() {
       
  2223   int status = pthread_mutex_lock(&_mutex);
       
  2224   assert_status(status == 0, status, "mutex_lock");
       
  2225 }
       
  2226 
       
  2227 void os::PlatformMonitor::unlock() {
       
  2228   int status = pthread_mutex_unlock(&_mutex);
       
  2229   assert_status(status == 0, status, "mutex_unlock");
       
  2230 }
       
  2231 
       
  2232 bool os::PlatformMonitor::try_lock() {
       
  2233   int status = pthread_mutex_trylock(&_mutex);
       
  2234   assert_status(status == 0 || status == EBUSY, status, "mutex_trylock");
       
  2235   return status == 0;
       
  2236 }
       
  2237 
       
  2238 // Must already be locked
  2222 // Must already be locked
  2239 int os::PlatformMonitor::wait(jlong millis) {
  2223 int os::PlatformMonitor::wait(jlong millis) {
  2240   assert(millis >= 0, "negative timeout");
  2224   assert(millis >= 0, "negative timeout");
  2241   if (millis > 0) {
  2225   if (millis > 0) {
  2242     struct timespec abst;
  2226     struct timespec abst;
  2261     assert_status(status == 0, status, "cond_wait");
  2245     assert_status(status == 0, status, "cond_wait");
  2262     return OS_OK;
  2246     return OS_OK;
  2263   }
  2247   }
  2264 }
  2248 }
  2265 
  2249 
  2266 void os::PlatformMonitor::notify() {
       
  2267   int status = pthread_cond_signal(&_cond);
       
  2268   assert_status(status == 0, status, "cond_signal");
       
  2269 }
       
  2270 
       
  2271 void os::PlatformMonitor::notify_all() {
       
  2272   int status = pthread_cond_broadcast(&_cond);
       
  2273   assert_status(status == 0, status, "cond_broadcast");
       
  2274 }
       
  2275 
       
  2276 #endif // !SOLARIS
  2250 #endif // !SOLARIS