254 // then you bind processes according to that distribution. 255 // Compute a distribution for number of processes to processors. 256 // Stores the processor id's into the distribution array argument. 257 // Returns true if it worked, false if it didn't. 258 static bool distribute_processes(uint length, uint* distribution); 259 // Binds the current process to a processor. 260 // Returns true if it worked, false if it didn't. 261 static bool bind_to_processor(uint processor_id); 262 263 // Give a name to the current thread. 264 static void set_native_thread_name(const char *name); 265 266 // Interface for stack banging (predetect possible stack overflow for 267 // exception processing) There are guard pages, and above that shadow 268 // pages for stack overflow checking. 269 static bool uses_stack_guard_pages(); 270 static bool must_commit_stack_guard_pages(); 271 static void map_stack_shadow_pages(address sp); 272 static bool stack_shadow_pages_available(Thread *thread, const methodHandle& method, address sp); 273 274 // OS interface to Virtual Memory 275 276 // Return the default page size. 277 static int vm_page_size(); 278 279 // Returns the page size to use for a region of memory. 280 // region_size / min_pages will always be greater than or equal to the 281 // returned value. The returned value will divide region_size. 282 static size_t page_size_for_region_aligned(size_t region_size, size_t min_pages); 283 284 // Returns the page size to use for a region of memory. 285 // region_size / min_pages will always be greater than or equal to the 286 // returned value. The returned value might not divide region_size. 287 static size_t page_size_for_region_unaligned(size_t region_size, size_t min_pages); 288 289 // Return the largest page size that can be used 290 static size_t max_page_size() { 291 // The _page_sizes array is sorted in descending order. 292 return _page_sizes[0]; 293 } | 254 // then you bind processes according to that distribution. 255 // Compute a distribution for number of processes to processors. 256 // Stores the processor id's into the distribution array argument. 257 // Returns true if it worked, false if it didn't. 258 static bool distribute_processes(uint length, uint* distribution); 259 // Binds the current process to a processor. 260 // Returns true if it worked, false if it didn't. 261 static bool bind_to_processor(uint processor_id); 262 263 // Give a name to the current thread. 264 static void set_native_thread_name(const char *name); 265 266 // Interface for stack banging (predetect possible stack overflow for 267 // exception processing) There are guard pages, and above that shadow 268 // pages for stack overflow checking. 269 static bool uses_stack_guard_pages(); 270 static bool must_commit_stack_guard_pages(); 271 static void map_stack_shadow_pages(address sp); 272 static bool stack_shadow_pages_available(Thread *thread, const methodHandle& method, address sp); 273 274 // Find committed memory region within specified range (start, start + size), 275 // return true if found any 276 static bool committed_in_range(address start, size_t size, address& committed_start, size_t& committed_size); 277 278 // OS interface to Virtual Memory 279 280 // Return the default page size. 281 static int vm_page_size(); 282 283 // Returns the page size to use for a region of memory. 284 // region_size / min_pages will always be greater than or equal to the 285 // returned value. The returned value will divide region_size. 286 static size_t page_size_for_region_aligned(size_t region_size, size_t min_pages); 287 288 // Returns the page size to use for a region of memory. 289 // region_size / min_pages will always be greater than or equal to the 290 // returned value. The returned value might not divide region_size. 291 static size_t page_size_for_region_unaligned(size_t region_size, size_t min_pages); 292 293 // Return the largest page size that can be used 294 static size_t max_page_size() { 295 // The _page_sizes array is sorted in descending order. 296 return _page_sizes[0]; 297 } |