< prev index next >
src/os/bsd/vm/osThread_bsd.cpp
Print this page
rev 8802 : G1 performance improvements: card batching, joining, sorting, prefetching and write barrier fence elision and simplification based on a global syncrhonization using handshakes piggybacking on thread-local safepoints.
@@ -49,5 +49,30 @@
}
void OSThread::pd_destroy() {
delete _startThread_lock;
}
+
+bool OSThread::is_online() {
+#ifdef __APPLE__
+ mach_msg_type_number_t thread_info_count = THREAD_BASIC_INFO_COUNT;
+ thread_basic_info_data_t thread_info_data;
+
+ kern_return_t kr = thread_info(
+ _thread_id,
+ THREAD_BASIC_INFO,
+ reinterpret_cast<thread_info_t>(&thread_info_data),
+ &thread_info_count);
+ if (kr != KERN_SUCCESS) {
+ return false;
+ }
+
+ if (thread_info_data.run_state != TH_STATE_RUNNING) return false;
+
+ const bool swapped = (thread_info_data.flags & TH_FLAGS_SWAPPED);
+ const bool idle = (thread_info_data.flags & TH_FLAGS_IDLE);
+
+ return !swapped && !idle;
+#else
+ return true;
+#endif
+}
< prev index next >