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 |