src/hotspot/os/linux/os_linux.hpp
changeset 59062 6530de931b8e
parent 58654 562bf1878089
equal deleted inserted replaced
59061:df6f2350edfa 59062:6530de931b8e
   214   typedef int (*numa_tonode_memory_func_t)(void *start, size_t size, int node);
   214   typedef int (*numa_tonode_memory_func_t)(void *start, size_t size, int node);
   215   typedef void (*numa_interleave_memory_func_t)(void *start, size_t size, unsigned long *nodemask);
   215   typedef void (*numa_interleave_memory_func_t)(void *start, size_t size, unsigned long *nodemask);
   216   typedef void (*numa_interleave_memory_v2_func_t)(void *start, size_t size, struct bitmask* mask);
   216   typedef void (*numa_interleave_memory_v2_func_t)(void *start, size_t size, struct bitmask* mask);
   217   typedef struct bitmask* (*numa_get_membind_func_t)(void);
   217   typedef struct bitmask* (*numa_get_membind_func_t)(void);
   218   typedef struct bitmask* (*numa_get_interleave_mask_func_t)(void);
   218   typedef struct bitmask* (*numa_get_interleave_mask_func_t)(void);
       
   219   typedef long (*numa_move_pages_func_t)(int pid, unsigned long count, void **pages, const int *nodes, int *status, int flags);
   219 
   220 
   220   typedef void (*numa_set_bind_policy_func_t)(int policy);
   221   typedef void (*numa_set_bind_policy_func_t)(int policy);
   221   typedef int (*numa_bitmask_isbitset_func_t)(struct bitmask *bmp, unsigned int n);
   222   typedef int (*numa_bitmask_isbitset_func_t)(struct bitmask *bmp, unsigned int n);
   222   typedef int (*numa_distance_func_t)(int node1, int node2);
   223   typedef int (*numa_distance_func_t)(int node1, int node2);
   223 
   224 
   232   static numa_set_bind_policy_func_t _numa_set_bind_policy;
   233   static numa_set_bind_policy_func_t _numa_set_bind_policy;
   233   static numa_bitmask_isbitset_func_t _numa_bitmask_isbitset;
   234   static numa_bitmask_isbitset_func_t _numa_bitmask_isbitset;
   234   static numa_distance_func_t _numa_distance;
   235   static numa_distance_func_t _numa_distance;
   235   static numa_get_membind_func_t _numa_get_membind;
   236   static numa_get_membind_func_t _numa_get_membind;
   236   static numa_get_interleave_mask_func_t _numa_get_interleave_mask;
   237   static numa_get_interleave_mask_func_t _numa_get_interleave_mask;
       
   238   static numa_move_pages_func_t _numa_move_pages;
   237   static unsigned long* _numa_all_nodes;
   239   static unsigned long* _numa_all_nodes;
   238   static struct bitmask* _numa_all_nodes_ptr;
   240   static struct bitmask* _numa_all_nodes_ptr;
   239   static struct bitmask* _numa_nodes_ptr;
   241   static struct bitmask* _numa_nodes_ptr;
   240   static struct bitmask* _numa_interleave_bitmask;
   242   static struct bitmask* _numa_interleave_bitmask;
   241   static struct bitmask* _numa_membind_bitmask;
   243   static struct bitmask* _numa_membind_bitmask;
   251   static void set_numa_set_bind_policy(numa_set_bind_policy_func_t func) { _numa_set_bind_policy = func; }
   253   static void set_numa_set_bind_policy(numa_set_bind_policy_func_t func) { _numa_set_bind_policy = func; }
   252   static void set_numa_bitmask_isbitset(numa_bitmask_isbitset_func_t func) { _numa_bitmask_isbitset = func; }
   254   static void set_numa_bitmask_isbitset(numa_bitmask_isbitset_func_t func) { _numa_bitmask_isbitset = func; }
   253   static void set_numa_distance(numa_distance_func_t func) { _numa_distance = func; }
   255   static void set_numa_distance(numa_distance_func_t func) { _numa_distance = func; }
   254   static void set_numa_get_membind(numa_get_membind_func_t func) { _numa_get_membind = func; }
   256   static void set_numa_get_membind(numa_get_membind_func_t func) { _numa_get_membind = func; }
   255   static void set_numa_get_interleave_mask(numa_get_interleave_mask_func_t func) { _numa_get_interleave_mask = func; }
   257   static void set_numa_get_interleave_mask(numa_get_interleave_mask_func_t func) { _numa_get_interleave_mask = func; }
       
   258   static void set_numa_move_pages(numa_move_pages_func_t func) { _numa_move_pages = func; }
   256   static void set_numa_all_nodes(unsigned long* ptr) { _numa_all_nodes = ptr; }
   259   static void set_numa_all_nodes(unsigned long* ptr) { _numa_all_nodes = ptr; }
   257   static void set_numa_all_nodes_ptr(struct bitmask **ptr) { _numa_all_nodes_ptr = (ptr == NULL ? NULL : *ptr); }
   260   static void set_numa_all_nodes_ptr(struct bitmask **ptr) { _numa_all_nodes_ptr = (ptr == NULL ? NULL : *ptr); }
   258   static void set_numa_nodes_ptr(struct bitmask **ptr) { _numa_nodes_ptr = (ptr == NULL ? NULL : *ptr); }
   261   static void set_numa_nodes_ptr(struct bitmask **ptr) { _numa_nodes_ptr = (ptr == NULL ? NULL : *ptr); }
   259   static void set_numa_interleave_bitmask(struct bitmask* ptr)     { _numa_interleave_bitmask = ptr ;   }
   262   static void set_numa_interleave_bitmask(struct bitmask* ptr)     { _numa_interleave_bitmask = ptr ;   }
   260   static void set_numa_membind_bitmask(struct bitmask* ptr)        { _numa_membind_bitmask = ptr ;      }
   263   static void set_numa_membind_bitmask(struct bitmask* ptr)        { _numa_membind_bitmask = ptr ;      }
   315       _numa_set_bind_policy(policy);
   318       _numa_set_bind_policy(policy);
   316     }
   319     }
   317   }
   320   }
   318   static int numa_distance(int node1, int node2) {
   321   static int numa_distance(int node1, int node2) {
   319     return _numa_distance != NULL ? _numa_distance(node1, node2) : -1;
   322     return _numa_distance != NULL ? _numa_distance(node1, node2) : -1;
       
   323   }
       
   324   static long numa_move_pages(int pid, unsigned long count, void **pages, const int *nodes, int *status, int flags) {
       
   325     return _numa_move_pages != NULL ? _numa_move_pages(pid, count, pages, nodes, status, flags) : -1;
   320   }
   326   }
   321   static int get_node_by_cpu(int cpu_id);
   327   static int get_node_by_cpu(int cpu_id);
   322   static int get_existing_num_nodes();
   328   static int get_existing_num_nodes();
   323   // Check if numa node is configured (non-zero memory node).
   329   // Check if numa node is configured (non-zero memory node).
   324   static bool is_node_in_configured_nodes(unsigned int n) {
   330   static bool is_node_in_configured_nodes(unsigned int n) {