463 464 // thread id on Linux/64bit is 64bit, on Windows and Solaris, it's 32bit 465 static intx current_thread_id(); 466 static int current_process_id(); 467 468 // Short standalone OS sleep routines suitable for slow path spin loop. 469 // Ignores safepoints/suspension/Thread.interrupt() (so keep it short). 470 // ms/ns = 0, will sleep for the least amount of time allowed by the OS. 471 // Maximum sleep time is just under 1 second. 472 static void naked_short_sleep(jlong ms); 473 static void naked_short_nanosleep(jlong ns); 474 // Longer standalone OS sleep routine - a convenience wrapper around 475 // multiple calls to naked_short_sleep. Only for use by non-JavaThreads. 476 static void naked_sleep(jlong millis); 477 // Never returns, use with CAUTION 478 static void infinite_sleep(); 479 static void naked_yield () ; 480 static OSReturn set_priority(Thread* thread, ThreadPriority priority); 481 static OSReturn get_priority(const Thread* const thread, ThreadPriority& priority); 482 483 static void interrupt(Thread* thread); 484 static bool is_interrupted(Thread* thread, bool clear_interrupted); 485 486 static int pd_self_suspend_thread(Thread* thread); 487 488 static ExtendedPC fetch_frame_from_context(const void* ucVoid, intptr_t** sp, intptr_t** fp); 489 static frame fetch_frame_from_context(const void* ucVoid); 490 static frame fetch_frame_from_ucontext(Thread* thread, void* ucVoid); 491 492 static void breakpoint(); 493 static bool start_debugging(char *buf, int buflen); 494 495 static address current_stack_pointer(); 496 static address current_stack_base(); 497 static size_t current_stack_size(); 498 499 static void verify_stack_alignment() PRODUCT_RETURN; 500 501 static bool message_box(const char* title, const char* message); 502 static char* do_you_want_to_debug(const char* message); 503 504 // run cmd in a separate process and return its exit code; or -1 on failures 505 static int fork_and_exec(char *cmd, bool use_vfork_if_available = false); | 463 464 // thread id on Linux/64bit is 64bit, on Windows and Solaris, it's 32bit 465 static intx current_thread_id(); 466 static int current_process_id(); 467 468 // Short standalone OS sleep routines suitable for slow path spin loop. 469 // Ignores safepoints/suspension/Thread.interrupt() (so keep it short). 470 // ms/ns = 0, will sleep for the least amount of time allowed by the OS. 471 // Maximum sleep time is just under 1 second. 472 static void naked_short_sleep(jlong ms); 473 static void naked_short_nanosleep(jlong ns); 474 // Longer standalone OS sleep routine - a convenience wrapper around 475 // multiple calls to naked_short_sleep. Only for use by non-JavaThreads. 476 static void naked_sleep(jlong millis); 477 // Never returns, use with CAUTION 478 static void infinite_sleep(); 479 static void naked_yield () ; 480 static OSReturn set_priority(Thread* thread, ThreadPriority priority); 481 static OSReturn get_priority(const Thread* const thread, ThreadPriority& priority); 482 483 static int pd_self_suspend_thread(Thread* thread); 484 485 static ExtendedPC fetch_frame_from_context(const void* ucVoid, intptr_t** sp, intptr_t** fp); 486 static frame fetch_frame_from_context(const void* ucVoid); 487 static frame fetch_frame_from_ucontext(Thread* thread, void* ucVoid); 488 489 static void breakpoint(); 490 static bool start_debugging(char *buf, int buflen); 491 492 static address current_stack_pointer(); 493 static address current_stack_base(); 494 static size_t current_stack_size(); 495 496 static void verify_stack_alignment() PRODUCT_RETURN; 497 498 static bool message_box(const char* title, const char* message); 499 static char* do_you_want_to_debug(const char* message); 500 501 // run cmd in a separate process and return its exit code; or -1 on failures 502 static int fork_and_exec(char *cmd, bool use_vfork_if_available = false); |