< prev index next >
src/hotspot/os/linux/os_linux.hpp
Print this page
rev 52796 : imported patch 8213827-numa-interleave-not-respected
rev 52797 : [mq]: 8213827-tschatzl-review
*** 239,248 ****
--- 239,249 ----
static numa_set_bind_policy_func_t _numa_set_bind_policy;
static numa_bitmask_isbitset_func_t _numa_bitmask_isbitset;
static numa_distance_func_t _numa_distance;
static numa_get_membind_func_t _numa_get_membind;
static numa_get_interleave_mask_func_t _numa_get_interleave_mask;
+
static unsigned long* _numa_all_nodes;
static struct bitmask* _numa_all_nodes_ptr;
static struct bitmask* _numa_nodes_ptr;
static struct bitmask* _numa_interleave_ptr;
static struct bitmask* _numa_membind_ptr;
*** 259,272 ****
static void set_numa_bitmask_isbitset(numa_bitmask_isbitset_func_t func) { _numa_bitmask_isbitset = func; }
static void set_numa_distance(numa_distance_func_t func) { _numa_distance = func; }
static void set_numa_get_membind(numa_get_membind_func_t func) { _numa_get_membind = func; }
static void set_numa_get_interleave_mask(numa_get_interleave_mask_func_t func) { _numa_get_interleave_mask = func; }
static void set_numa_all_nodes(unsigned long* ptr) { _numa_all_nodes = ptr; }
! static void set_numa_all_nodes_ptr(struct bitmask **ptr) { _numa_all_nodes_ptr = (ptr == NULL ? NULL : *ptr); }
! static void set_numa_nodes_ptr(struct bitmask **ptr) { _numa_nodes_ptr = (ptr == NULL ? NULL : *ptr); }
! static void set_numa_interleave_ptr(struct bitmask **ptr) { _numa_interleave_ptr = (ptr == NULL ? NULL : *ptr); }
! static void set_numa_membind_ptr(struct bitmask **ptr) { _numa_membind_ptr = (ptr == NULL ? NULL : *ptr); }
static int sched_getcpu_syscall(void);
public:
static int sched_getcpu() { return _sched_getcpu != NULL ? _sched_getcpu() : -1; }
static int numa_node_to_cpus(int node, unsigned long *buffer, int bufferlen) {
return _numa_node_to_cpus != NULL ? _numa_node_to_cpus(node, buffer, bufferlen) : -1;
--- 260,273 ----
static void set_numa_bitmask_isbitset(numa_bitmask_isbitset_func_t func) { _numa_bitmask_isbitset = func; }
static void set_numa_distance(numa_distance_func_t func) { _numa_distance = func; }
static void set_numa_get_membind(numa_get_membind_func_t func) { _numa_get_membind = func; }
static void set_numa_get_interleave_mask(numa_get_interleave_mask_func_t func) { _numa_get_interleave_mask = func; }
static void set_numa_all_nodes(unsigned long* ptr) { _numa_all_nodes = ptr; }
! static void set_numa_all_nodes_ptr(struct bitmask* ptr) { _numa_all_nodes_ptr = ptr; }
! static void set_numa_nodes_ptr(struct bitmask* ptr) { _numa_nodes_ptr = ptr; }
! static void set_numa_interleave_ptr(struct bitmask* ptr) { _numa_interleave_ptr = ptr; }
! static void set_numa_membind_ptr(struct bitmask* ptr) { _numa_membind_ptr = ptr; }
static int sched_getcpu_syscall(void);
public:
static int sched_getcpu() { return _sched_getcpu != NULL ? _sched_getcpu() : -1; }
static int numa_node_to_cpus(int node, unsigned long *buffer, int bufferlen) {
return _numa_node_to_cpus != NULL ? _numa_node_to_cpus(node, buffer, bufferlen) : -1;
*** 280,294 ****
return _numa_tonode_memory != NULL ? _numa_tonode_memory(start, size, node) : -1;
}
static void numa_interleave_memory(void *start, size_t size) {
// Use v2 api if available
if (_numa_interleave_memory_v2 != NULL && _numa_all_nodes_ptr != NULL) {
! if (_numa_interleave_ptr != NULL)
// If externally invoked in interleave mode then use interleave bitmask.
_numa_interleave_memory_v2(start, size, _numa_interleave_ptr);
! else
_numa_interleave_memory_v2(start, size, _numa_membind_ptr);
} else if (_numa_interleave_memory != NULL && _numa_all_nodes != NULL) {
_numa_interleave_memory(start, size, _numa_all_nodes);
}
}
static void numa_set_bind_policy(int policy) {
--- 281,296 ----
return _numa_tonode_memory != NULL ? _numa_tonode_memory(start, size, node) : -1;
}
static void numa_interleave_memory(void *start, size_t size) {
// Use v2 api if available
if (_numa_interleave_memory_v2 != NULL && _numa_all_nodes_ptr != NULL) {
! if (_numa_interleave_ptr != NULL) {
// If externally invoked in interleave mode then use interleave bitmask.
_numa_interleave_memory_v2(start, size, _numa_interleave_ptr);
! } else {
_numa_interleave_memory_v2(start, size, _numa_membind_ptr);
+ }
} else if (_numa_interleave_memory != NULL && _numa_all_nodes != NULL) {
_numa_interleave_memory(start, size, _numa_all_nodes);
}
}
static void numa_set_bind_policy(int policy) {
< prev index next >