< prev index next >
src/os/linux/vm/os_linux.cpp
Print this page
rev 10257 : 8149036: Add tracing for thread related events at os level
Reviewed-by:
*** 660,669 ****
--- 660,672 ----
OSThread* osthread = thread->osthread();
Monitor* sync = osthread->startThread_lock();
osthread->set_thread_id(os::current_thread_id());
+ log_debug(os)("Thread is alive (tid: " UINTX_FORMAT ", pthread id: " UINTX_FORMAT ").",
+ os::current_thread_id(), (uintx) pthread_self());
+
if (UseNUMA) {
int lgrp_id = os::numa_get_group_id();
if (lgrp_id != -1) {
thread->set_lgrp_id(lgrp_id);
}
*** 689,698 ****
--- 692,704 ----
}
// call one more level start routine
thread->run();
+ log_debug(os)("Thread finished (tid " UINTX_FORMAT ", pthread id " UINTX_FORMAT ").",
+ os::current_thread_id(), (uintx) pthread_self());
+
return 0;
}
bool os::create_thread(Thread* thread, ThreadType thr_type,
size_t stack_size) {
*** 754,769 ****
{
pthread_t tid;
int ret = pthread_create(&tid, &attr, (void* (*)(void*)) java_start, thread);
pthread_attr_destroy(&attr);
if (ret != 0) {
- if (PrintMiscellaneous && (Verbose || WizardMode)) {
- perror("pthread_create()");
- }
// Need to clean up stuff we've allocated so far
thread->set_osthread(NULL);
delete osthread;
return false;
}
--- 760,784 ----
{
pthread_t tid;
int ret = pthread_create(&tid, &attr, (void* (*)(void*)) java_start, thread);
+ LogHandle(os) log;
+ if (log.is_debug()) {
+ char buf[64];
+ if (ret == 0) {
+ log.debug("Thread started (pthread id: " UINTX_FORMAT ", attributes: %s). ",
+ (uintx) tid, os::Posix::describe_pthread_attr(buf, sizeof(buf), &attr));
+ } else {
+ log.warning("Failed to start thread - pthread_create failed (%s) for attributes: %s.",
+ os::errno_name(errno), os::Posix::describe_pthread_attr(buf, sizeof(buf), &attr));
+ }
+ }
+
pthread_attr_destroy(&attr);
if (ret != 0) {
// Need to clean up stuff we've allocated so far
thread->set_osthread(NULL);
delete osthread;
return false;
}
*** 856,865 ****
--- 871,883 ----
// initialize signal mask for this thread
// and save the caller's signal mask
os::Linux::hotspot_sigmask(thread);
+ log_debug(os)("Thread attached (tid: " UINTX_FORMAT ", pthread id: " UINTX_FORMAT ").",
+ os::current_thread_id(), (uintx) pthread_self());
+
return true;
}
void os::pd_start_thread(Thread* thread) {
OSThread * osthread = thread->osthread();
< prev index next >