99 static void *dll_load_in_vmthread(const char *name, char *ebuf, int ebuflen); 100 101 static void init_thread_fpu_state(); 102 static int get_fpu_control_word(); 103 static void set_fpu_control_word(int fpu_control); 104 static pthread_t main_thread(void) { return _main_thread; } 105 // returns kernel thread id (similar to LWP id on Solaris), which can be 106 // used to access /proc 107 static pid_t gettid(); 108 static void set_createThread_lock(Mutex* lk) { _createThread_lock = lk; } 109 static Mutex* createThread_lock(void) { return _createThread_lock; } 110 static void hotspot_sigmask(Thread* thread); 111 112 static address initial_thread_stack_bottom(void) { return _initial_thread_stack_bottom; } 113 static uintptr_t initial_thread_stack_size(void) { return _initial_thread_stack_size; } 114 static bool is_initial_thread(void); 115 116 static int page_size(void) { return _page_size; } 117 static void set_page_size(int val) { _page_size = val; } 118 119 static address ucontext_get_pc(ucontext_t* uc); 120 static intptr_t* ucontext_get_sp(ucontext_t* uc); 121 static intptr_t* ucontext_get_fp(ucontext_t* uc); 122 123 // For Analyzer Forte AsyncGetCallTrace profiling support: 124 // 125 // This interface should be declared in os_linux_i486.hpp, but 126 // that file provides extensions to the os class and not the 127 // Linux class. 128 static ExtendedPC fetch_frame_from_ucontext(Thread* thread, ucontext_t* uc, 129 intptr_t** ret_sp, intptr_t** ret_fp); 130 131 // This boolean allows users to forward their own non-matching signals 132 // to JVM_handle_linux_signal, harmlessly. 133 static bool signal_handlers_are_installed; 134 135 static int get_our_sigflags(int); 136 static void set_our_sigflags(int, int); 137 static void signal_sets_init(); 138 static void install_signal_handlers(); | 99 static void *dll_load_in_vmthread(const char *name, char *ebuf, int ebuflen); 100 101 static void init_thread_fpu_state(); 102 static int get_fpu_control_word(); 103 static void set_fpu_control_word(int fpu_control); 104 static pthread_t main_thread(void) { return _main_thread; } 105 // returns kernel thread id (similar to LWP id on Solaris), which can be 106 // used to access /proc 107 static pid_t gettid(); 108 static void set_createThread_lock(Mutex* lk) { _createThread_lock = lk; } 109 static Mutex* createThread_lock(void) { return _createThread_lock; } 110 static void hotspot_sigmask(Thread* thread); 111 112 static address initial_thread_stack_bottom(void) { return _initial_thread_stack_bottom; } 113 static uintptr_t initial_thread_stack_size(void) { return _initial_thread_stack_size; } 114 static bool is_initial_thread(void); 115 116 static int page_size(void) { return _page_size; } 117 static void set_page_size(int val) { _page_size = val; } 118 119 // The HotSpot VM used the OS page size as the base for the computation of other sizes 120 // (e.g. the min. stack size). These computations can become bogus now that the default 121 // page sizes on various platforms are constantly increasing. 122 // This method returns the historical standard page size of the platform (which is 4K on Linux) 123 static int vm_default_page_size(void) { return 4 * K; } 124 125 static address ucontext_get_pc(ucontext_t* uc); 126 static intptr_t* ucontext_get_sp(ucontext_t* uc); 127 static intptr_t* ucontext_get_fp(ucontext_t* uc); 128 129 // For Analyzer Forte AsyncGetCallTrace profiling support: 130 // 131 // This interface should be declared in os_linux_i486.hpp, but 132 // that file provides extensions to the os class and not the 133 // Linux class. 134 static ExtendedPC fetch_frame_from_ucontext(Thread* thread, ucontext_t* uc, 135 intptr_t** ret_sp, intptr_t** ret_fp); 136 137 // This boolean allows users to forward their own non-matching signals 138 // to JVM_handle_linux_signal, harmlessly. 139 static bool signal_handlers_are_installed; 140 141 static int get_our_sigflags(int); 142 static void set_our_sigflags(int, int); 143 static void signal_sets_init(); 144 static void install_signal_handlers(); |