450 static bool is_primordial_thread(void) 451 #if defined(_WINDOWS) || defined(BSD) 452 // No way to identify the primordial thread. 453 { return false; } 454 #else 455 ; 456 #endif 457 458 static bool create_attached_thread(JavaThread* thread); 459 static void pd_start_thread(Thread* thread); 460 static void start_thread(Thread* thread); 461 462 // Returns true if successful. 463 static bool signal_thread(Thread* thread, int sig, const char* reason); 464 465 static void free_thread(OSThread* osthread); 466 467 // thread id on Linux/64bit is 64bit, on Windows and Solaris, it's 32bit 468 static intx current_thread_id(); 469 static int current_process_id(); 470 static int sleep(Thread* thread, jlong ms, bool interruptable); 471 // Short standalone OS sleep suitable for slow path spin loop. 472 // Ignores Thread.interrupt() (so keep it short). 473 // ms = 0, will sleep for the least amount of time allowed by the OS. 474 static void naked_short_sleep(jlong ms); 475 static void naked_short_nanosleep(jlong ns); 476 static void infinite_sleep(); // never returns, use with CAUTION 477 static void naked_yield () ; 478 static OSReturn set_priority(Thread* thread, ThreadPriority priority); 479 static OSReturn get_priority(const Thread* const thread, ThreadPriority& priority); 480 481 static void interrupt(Thread* thread); 482 static bool is_interrupted(Thread* thread, bool clear_interrupted); 483 484 static int pd_self_suspend_thread(Thread* thread); 485 486 static ExtendedPC fetch_frame_from_context(const void* ucVoid, intptr_t** sp, intptr_t** fp); 487 static frame fetch_frame_from_context(const void* ucVoid); 488 static frame fetch_frame_from_ucontext(Thread* thread, void* ucVoid); 489 490 static void breakpoint(); 491 static bool start_debugging(char *buf, int buflen); 492 493 static address current_stack_pointer(); 494 static address current_stack_base(); 495 static size_t current_stack_size(); 496 | 450 static bool is_primordial_thread(void) 451 #if defined(_WINDOWS) || defined(BSD) 452 // No way to identify the primordial thread. 453 { return false; } 454 #else 455 ; 456 #endif 457 458 static bool create_attached_thread(JavaThread* thread); 459 static void pd_start_thread(Thread* thread); 460 static void start_thread(Thread* thread); 461 462 // Returns true if successful. 463 static bool signal_thread(Thread* thread, int sig, const char* reason); 464 465 static void free_thread(OSThread* osthread); 466 467 // thread id on Linux/64bit is 64bit, on Windows and Solaris, it's 32bit 468 static intx current_thread_id(); 469 static int current_process_id(); 470 // Implementation of java.lang.Thread.sleep for JavaThreads 471 static int sleep(JavaThread* thread, jlong ms); 472 // Short standalone OS sleep routines suitable for slow path spin loop. 473 // Ignores safepoints/suspension/Thread.interrupt() (so keep it short). 474 // ms/ns = 0, will sleep for the least amount of time allowed by the OS. 475 // Maximum sleep time is just under 1 second. 476 static void naked_short_sleep(jlong ms); 477 static void naked_short_nanosleep(jlong ns); 478 // Longer standalone OS sleep routine - a convenience wrapper around 479 // multiple calls to naked_short_sleep. Only for use by non-JavaThreads. 480 static void naked_sleep(jlong millis); 481 // Never returns, use with CAUTION 482 static void infinite_sleep(); 483 static void naked_yield () ; 484 static OSReturn set_priority(Thread* thread, ThreadPriority priority); 485 static OSReturn get_priority(const Thread* const thread, ThreadPriority& priority); 486 487 static void interrupt(Thread* thread); 488 static bool is_interrupted(Thread* thread, bool clear_interrupted); 489 490 static int pd_self_suspend_thread(Thread* thread); 491 492 static ExtendedPC fetch_frame_from_context(const void* ucVoid, intptr_t** sp, intptr_t** fp); 493 static frame fetch_frame_from_context(const void* ucVoid); 494 static frame fetch_frame_from_ucontext(Thread* thread, void* ucVoid); 495 496 static void breakpoint(); 497 static bool start_debugging(char *buf, int buflen); 498 499 static address current_stack_pointer(); 500 static address current_stack_base(); 501 static size_t current_stack_size(); 502 |