88 typedef int (*lgrp_cookie_stale_func_t)(lgrp_cookie_t cookie); 89 90 static lgrp_home_func_t _lgrp_home; 91 static lgrp_init_func_t _lgrp_init; 92 static lgrp_fini_func_t _lgrp_fini; 93 static lgrp_root_func_t _lgrp_root; 94 static lgrp_children_func_t _lgrp_children; 95 static lgrp_resources_func_t _lgrp_resources; 96 static lgrp_nlgrps_func_t _lgrp_nlgrps; 97 static lgrp_cookie_stale_func_t _lgrp_cookie_stale; 98 static lgrp_cookie_t _lgrp_cookie; 99 100 // Large Page Support 101 static bool is_valid_page_size(size_t bytes); 102 static size_t page_size_for_alignment(size_t alignment); 103 static bool setup_large_pages(caddr_t start, size_t bytes, size_t align); 104 105 static void try_enable_extended_io(); 106 107 static struct sigaction *(*get_signal_action)(int); 108 static struct sigaction *get_preinstalled_handler(int); 109 static int (*get_libjsig_version)(); 110 static void save_preinstalled_handler(int, struct sigaction&); 111 static void check_signal_handler(int sig); 112 113 typedef int (*pthread_setname_np_func_t)(pthread_t, const char*); 114 static pthread_setname_np_func_t _pthread_setname_np; 115 116 public: 117 // Large Page Support--ISM. 118 static bool largepage_range(char* addr, size_t size); 119 120 static address handler_start, handler_end; // start and end pc of thr_sighndlrinfo 121 122 static bool valid_stack_address(Thread* thread, address sp); 123 static bool valid_ucontext(Thread* thread, const ucontext_t* valid, const ucontext_t* suspect); 124 static const ucontext_t* get_valid_uc_in_signal_handler(Thread* thread, 125 const ucontext_t* uc); 126 127 static ExtendedPC ucontext_get_ExtendedPC(const ucontext_t* uc); 128 static intptr_t* ucontext_get_sp(const ucontext_t* uc); 129 // ucontext_get_fp() is only used by Solaris X86 (see note below) 130 static intptr_t* ucontext_get_fp(const ucontext_t* uc); | 88 typedef int (*lgrp_cookie_stale_func_t)(lgrp_cookie_t cookie); 89 90 static lgrp_home_func_t _lgrp_home; 91 static lgrp_init_func_t _lgrp_init; 92 static lgrp_fini_func_t _lgrp_fini; 93 static lgrp_root_func_t _lgrp_root; 94 static lgrp_children_func_t _lgrp_children; 95 static lgrp_resources_func_t _lgrp_resources; 96 static lgrp_nlgrps_func_t _lgrp_nlgrps; 97 static lgrp_cookie_stale_func_t _lgrp_cookie_stale; 98 static lgrp_cookie_t _lgrp_cookie; 99 100 // Large Page Support 101 static bool is_valid_page_size(size_t bytes); 102 static size_t page_size_for_alignment(size_t alignment); 103 static bool setup_large_pages(caddr_t start, size_t bytes, size_t align); 104 105 static void try_enable_extended_io(); 106 107 static struct sigaction *(*get_signal_action)(int); 108 static int (*get_libjsig_version)(); 109 static void check_signal_handler(int sig); 110 111 typedef int (*pthread_setname_np_func_t)(pthread_t, const char*); 112 static pthread_setname_np_func_t _pthread_setname_np; 113 114 public: 115 // Large Page Support--ISM. 116 static bool largepage_range(char* addr, size_t size); 117 118 static address handler_start, handler_end; // start and end pc of thr_sighndlrinfo 119 120 static bool valid_stack_address(Thread* thread, address sp); 121 static bool valid_ucontext(Thread* thread, const ucontext_t* valid, const ucontext_t* suspect); 122 static const ucontext_t* get_valid_uc_in_signal_handler(Thread* thread, 123 const ucontext_t* uc); 124 125 static ExtendedPC ucontext_get_ExtendedPC(const ucontext_t* uc); 126 static intptr_t* ucontext_get_sp(const ucontext_t* uc); 127 // ucontext_get_fp() is only used by Solaris X86 (see note below) 128 static intptr_t* ucontext_get_fp(const ucontext_t* uc); |