< 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: coleenp

*** 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.", + strerror(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 >