179 static bool chained_handler(int sig, siginfo_t* siginfo, void* context);
180
181 // GNU libc and libpthread version strings
182 static const char *glibc_version() { return _glibc_version; }
183 static const char *libpthread_version() { return _libpthread_version; }
184
185 static void libpthread_init();
186 static void sched_getcpu_init();
187 static bool libnuma_init();
188 static void* libnuma_dlsym(void* handle, const char* name);
189 // libnuma v2 (libnuma_1.2) symbols
190 static void* libnuma_v2_dlsym(void* handle, const char* name);
191
192 // Return default guard size for the specified thread type
193 static size_t default_guard_size(os::ThreadType thr_type);
194
195 static void capture_initial_stack(size_t max_size);
196
197 // Stack overflow handling
198 static bool manually_expand_stack(JavaThread * t, address addr);
199 static int max_register_window_saves_before_flushing();
200
201 // fast POSIX clocks support
202 static void fast_thread_clock_init(void);
203
204 static int pthread_getcpuclockid(pthread_t tid, clockid_t *clock_id) {
205 return _pthread_getcpuclockid ? _pthread_getcpuclockid(tid, clock_id) : -1;
206 }
207
208 static bool supports_fast_thread_cpu_time() {
209 return _supports_fast_thread_cpu_time;
210 }
211
212 static jlong fast_thread_cpu_time(clockid_t clockid);
213
214 static void initialize_os_info();
215 static bool os_version_is_known();
216 static uint32_t os_version();
217
218 // Stack repair handling
219
220 // none present
221
222 private:
223 static void numa_init();
224 static void expand_stack_to(address bottom);
225
226 typedef int (*sched_getcpu_func_t)(void);
227 typedef int (*numa_node_to_cpus_func_t)(int node, unsigned long *buffer, int bufferlen);
228 typedef int (*numa_max_node_func_t)(void);
229 typedef int (*numa_num_configured_nodes_func_t)(void);
230 typedef int (*numa_available_func_t)(void);
231 typedef int (*numa_tonode_memory_func_t)(void *start, size_t size, int node);
232 typedef void (*numa_interleave_memory_func_t)(void *start, size_t size, unsigned long *nodemask);
233 typedef void (*numa_interleave_memory_v2_func_t)(void *start, size_t size, struct bitmask* mask);
234 typedef struct bitmask* (*numa_get_membind_func_t)(void);
235 typedef struct bitmask* (*numa_get_interleave_mask_func_t)(void);
|
179 static bool chained_handler(int sig, siginfo_t* siginfo, void* context);
180
181 // GNU libc and libpthread version strings
182 static const char *glibc_version() { return _glibc_version; }
183 static const char *libpthread_version() { return _libpthread_version; }
184
185 static void libpthread_init();
186 static void sched_getcpu_init();
187 static bool libnuma_init();
188 static void* libnuma_dlsym(void* handle, const char* name);
189 // libnuma v2 (libnuma_1.2) symbols
190 static void* libnuma_v2_dlsym(void* handle, const char* name);
191
192 // Return default guard size for the specified thread type
193 static size_t default_guard_size(os::ThreadType thr_type);
194
195 static void capture_initial_stack(size_t max_size);
196
197 // Stack overflow handling
198 static bool manually_expand_stack(JavaThread * t, address addr);
199
200 // fast POSIX clocks support
201 static void fast_thread_clock_init(void);
202
203 static int pthread_getcpuclockid(pthread_t tid, clockid_t *clock_id) {
204 return _pthread_getcpuclockid ? _pthread_getcpuclockid(tid, clock_id) : -1;
205 }
206
207 static bool supports_fast_thread_cpu_time() {
208 return _supports_fast_thread_cpu_time;
209 }
210
211 static jlong fast_thread_cpu_time(clockid_t clockid);
212
213 static void initialize_os_info();
214 static uint32_t os_version();
215
216 // Stack repair handling
217
218 // none present
219
220 private:
221 static void numa_init();
222 static void expand_stack_to(address bottom);
223
224 typedef int (*sched_getcpu_func_t)(void);
225 typedef int (*numa_node_to_cpus_func_t)(int node, unsigned long *buffer, int bufferlen);
226 typedef int (*numa_max_node_func_t)(void);
227 typedef int (*numa_num_configured_nodes_func_t)(void);
228 typedef int (*numa_available_func_t)(void);
229 typedef int (*numa_tonode_memory_func_t)(void *start, size_t size, int node);
230 typedef void (*numa_interleave_memory_func_t)(void *start, size_t size, unsigned long *nodemask);
231 typedef void (*numa_interleave_memory_v2_func_t)(void *start, size_t size, struct bitmask* mask);
232 typedef struct bitmask* (*numa_get_membind_func_t)(void);
233 typedef struct bitmask* (*numa_get_interleave_mask_func_t)(void);
|