< 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 >