< prev index next >

src/os/linux/vm/os_linux.hpp

Print this page




  82                                 size_t alignment_hint, bool exec);
  83 
  84   static void set_glibc_version(const char *s)      { _glibc_version = s; }
  85   static void set_libpthread_version(const char *s) { _libpthread_version = s; }
  86 
  87   static void rebuild_cpu_to_node_map();
  88   static GrowableArray<int>* cpu_to_node()    { return _cpu_to_node; }
  89 
  90   static size_t find_large_page_size();
  91   static size_t setup_large_page_size();
  92 
  93   static bool setup_large_page_type(size_t page_size);
  94   static bool transparent_huge_pages_sanity_check(bool warn, size_t pages_size);
  95   static bool hugetlbfs_sanity_check(bool warn, size_t page_size);
  96 
  97   static char* reserve_memory_special_shm(size_t bytes, size_t alignment, char* req_addr, bool exec);
  98   static char* reserve_memory_special_huge_tlbfs(size_t bytes, size_t alignment, char* req_addr, bool exec);
  99   static char* reserve_memory_special_huge_tlbfs_only(size_t bytes, char* req_addr, bool exec);
 100   static char* reserve_memory_special_huge_tlbfs_mixed(size_t bytes, size_t alignment, char* req_addr, bool exec);
 101 



 102   static bool release_memory_special_impl(char* base, size_t bytes);
 103   static bool release_memory_special_shm(char* base, size_t bytes);
 104   static bool release_memory_special_huge_tlbfs(char* base, size_t bytes);
 105 
 106   static void print_full_memory_info(outputStream* st);
 107   static void print_distro_info(outputStream* st);
 108   static void print_libversion_info(outputStream* st);
 109 
 110  public:
 111   static bool _stack_is_executable;
 112   static void *dlopen_helper(const char *name, char *ebuf, int ebuflen);
 113   static void *dll_load_in_vmthread(const char *name, char *ebuf, int ebuflen);
 114 
 115   static void init_thread_fpu_state();
 116   static int  get_fpu_control_word();
 117   static void set_fpu_control_word(int fpu_control);
 118   static pthread_t main_thread(void)                                { return _main_thread; }
 119   // returns kernel thread id (similar to LWP id on Solaris), which can be
 120   // used to access /proc
 121   static pid_t gettid();


 232   typedef void (*numa_set_bind_policy_func_t)(int policy);
 233 
 234   static sched_getcpu_func_t _sched_getcpu;
 235   static numa_node_to_cpus_func_t _numa_node_to_cpus;
 236   static numa_max_node_func_t _numa_max_node;
 237   static numa_available_func_t _numa_available;
 238   static numa_tonode_memory_func_t _numa_tonode_memory;
 239   static numa_interleave_memory_func_t _numa_interleave_memory;
 240   static numa_set_bind_policy_func_t _numa_set_bind_policy;
 241   static unsigned long* _numa_all_nodes;
 242 
 243   static void set_sched_getcpu(sched_getcpu_func_t func) { _sched_getcpu = func; }
 244   static void set_numa_node_to_cpus(numa_node_to_cpus_func_t func) { _numa_node_to_cpus = func; }
 245   static void set_numa_max_node(numa_max_node_func_t func) { _numa_max_node = func; }
 246   static void set_numa_available(numa_available_func_t func) { _numa_available = func; }
 247   static void set_numa_tonode_memory(numa_tonode_memory_func_t func) { _numa_tonode_memory = func; }
 248   static void set_numa_interleave_memory(numa_interleave_memory_func_t func) { _numa_interleave_memory = func; }
 249   static void set_numa_set_bind_policy(numa_set_bind_policy_func_t func) { _numa_set_bind_policy = func; }
 250   static void set_numa_all_nodes(unsigned long* ptr) { _numa_all_nodes = ptr; }
 251   static int sched_getcpu_syscall(void);






 252  public:
 253   static int sched_getcpu()  { return _sched_getcpu != NULL ? _sched_getcpu() : -1; }
 254   static int numa_node_to_cpus(int node, unsigned long *buffer, int bufferlen) {
 255     return _numa_node_to_cpus != NULL ? _numa_node_to_cpus(node, buffer, bufferlen) : -1;
 256   }
 257   static int numa_max_node() { return _numa_max_node != NULL ? _numa_max_node() : -1; }
 258   static int numa_available() { return _numa_available != NULL ? _numa_available() : -1; }
 259   static int numa_tonode_memory(void *start, size_t size, int node) {
 260     return _numa_tonode_memory != NULL ? _numa_tonode_memory(start, size, node) : -1;
 261   }
 262   static void numa_interleave_memory(void *start, size_t size) {
 263     if (_numa_interleave_memory != NULL && _numa_all_nodes != NULL) {
 264       _numa_interleave_memory(start, size, _numa_all_nodes);
 265     }
 266   }
 267   static void numa_set_bind_policy(int policy) {
 268     if (_numa_set_bind_policy != NULL) {
 269       _numa_set_bind_policy(policy);
 270     }
 271   }




  82                                 size_t alignment_hint, bool exec);
  83 
  84   static void set_glibc_version(const char *s)      { _glibc_version = s; }
  85   static void set_libpthread_version(const char *s) { _libpthread_version = s; }
  86 
  87   static void rebuild_cpu_to_node_map();
  88   static GrowableArray<int>* cpu_to_node()    { return _cpu_to_node; }
  89 
  90   static size_t find_large_page_size();
  91   static size_t setup_large_page_size();
  92 
  93   static bool setup_large_page_type(size_t page_size);
  94   static bool transparent_huge_pages_sanity_check(bool warn, size_t pages_size);
  95   static bool hugetlbfs_sanity_check(bool warn, size_t page_size);
  96 
  97   static char* reserve_memory_special_shm(size_t bytes, size_t alignment, char* req_addr, bool exec);
  98   static char* reserve_memory_special_huge_tlbfs(size_t bytes, size_t alignment, char* req_addr, bool exec);
  99   static char* reserve_memory_special_huge_tlbfs_only(size_t bytes, char* req_addr, bool exec);
 100   static char* reserve_memory_special_huge_tlbfs_mixed(size_t bytes, size_t alignment, char* req_addr, bool exec);
 101 
 102   static char*  reserve_memory_with_backing_file(size_t bytes, char* requested_addr,
 103                                                  size_t alignment_hint, const char* backingFileDir);
 104 
 105   static bool release_memory_special_impl(char* base, size_t bytes);
 106   static bool release_memory_special_shm(char* base, size_t bytes);
 107   static bool release_memory_special_huge_tlbfs(char* base, size_t bytes);
 108 
 109   static void print_full_memory_info(outputStream* st);
 110   static void print_distro_info(outputStream* st);
 111   static void print_libversion_info(outputStream* st);
 112 
 113  public:
 114   static bool _stack_is_executable;
 115   static void *dlopen_helper(const char *name, char *ebuf, int ebuflen);
 116   static void *dll_load_in_vmthread(const char *name, char *ebuf, int ebuflen);
 117 
 118   static void init_thread_fpu_state();
 119   static int  get_fpu_control_word();
 120   static void set_fpu_control_word(int fpu_control);
 121   static pthread_t main_thread(void)                                { return _main_thread; }
 122   // returns kernel thread id (similar to LWP id on Solaris), which can be
 123   // used to access /proc
 124   static pid_t gettid();


 235   typedef void (*numa_set_bind_policy_func_t)(int policy);
 236 
 237   static sched_getcpu_func_t _sched_getcpu;
 238   static numa_node_to_cpus_func_t _numa_node_to_cpus;
 239   static numa_max_node_func_t _numa_max_node;
 240   static numa_available_func_t _numa_available;
 241   static numa_tonode_memory_func_t _numa_tonode_memory;
 242   static numa_interleave_memory_func_t _numa_interleave_memory;
 243   static numa_set_bind_policy_func_t _numa_set_bind_policy;
 244   static unsigned long* _numa_all_nodes;
 245 
 246   static void set_sched_getcpu(sched_getcpu_func_t func) { _sched_getcpu = func; }
 247   static void set_numa_node_to_cpus(numa_node_to_cpus_func_t func) { _numa_node_to_cpus = func; }
 248   static void set_numa_max_node(numa_max_node_func_t func) { _numa_max_node = func; }
 249   static void set_numa_available(numa_available_func_t func) { _numa_available = func; }
 250   static void set_numa_tonode_memory(numa_tonode_memory_func_t func) { _numa_tonode_memory = func; }
 251   static void set_numa_interleave_memory(numa_interleave_memory_func_t func) { _numa_interleave_memory = func; }
 252   static void set_numa_set_bind_policy(numa_set_bind_policy_func_t func) { _numa_set_bind_policy = func; }
 253   static void set_numa_all_nodes(unsigned long* ptr) { _numa_all_nodes = ptr; }
 254   static int sched_getcpu_syscall(void);
 255 
 256   static int create_tmpfile(const char* dir, size_t size, bool exec);
 257   static char* reserve_memory_with_backing_file_aligned(size_t size, size_t alignment, int fd);
 258   static char* reserve_memory_with_backing_file_at(size_t bytes, char* requested_addr, int fd);
 259 
 260 
 261  public:
 262   static int sched_getcpu()  { return _sched_getcpu != NULL ? _sched_getcpu() : -1; }
 263   static int numa_node_to_cpus(int node, unsigned long *buffer, int bufferlen) {
 264     return _numa_node_to_cpus != NULL ? _numa_node_to_cpus(node, buffer, bufferlen) : -1;
 265   }
 266   static int numa_max_node() { return _numa_max_node != NULL ? _numa_max_node() : -1; }
 267   static int numa_available() { return _numa_available != NULL ? _numa_available() : -1; }
 268   static int numa_tonode_memory(void *start, size_t size, int node) {
 269     return _numa_tonode_memory != NULL ? _numa_tonode_memory(start, size, node) : -1;
 270   }
 271   static void numa_interleave_memory(void *start, size_t size) {
 272     if (_numa_interleave_memory != NULL && _numa_all_nodes != NULL) {
 273       _numa_interleave_memory(start, size, _numa_all_nodes);
 274     }
 275   }
 276   static void numa_set_bind_policy(int policy) {
 277     if (_numa_set_bind_policy != NULL) {
 278       _numa_set_bind_policy(policy);
 279     }
 280   }


< prev index next >