1.1 --- a/src/os/linux/vm/os_linux.hpp Fri Aug 23 15:59:20 2013 -0700 1.2 +++ b/src/os/linux/vm/os_linux.hpp Thu Aug 22 10:50:41 2013 +0200 1.3 @@ -221,6 +221,7 @@ 1.4 typedef int (*numa_available_func_t)(void); 1.5 typedef int (*numa_tonode_memory_func_t)(void *start, size_t size, int node); 1.6 typedef void (*numa_interleave_memory_func_t)(void *start, size_t size, unsigned long *nodemask); 1.7 + typedef void (*numa_set_bind_policy_func_t)(int policy); 1.8 1.9 static sched_getcpu_func_t _sched_getcpu; 1.10 static numa_node_to_cpus_func_t _numa_node_to_cpus; 1.11 @@ -228,6 +229,7 @@ 1.12 static numa_available_func_t _numa_available; 1.13 static numa_tonode_memory_func_t _numa_tonode_memory; 1.14 static numa_interleave_memory_func_t _numa_interleave_memory; 1.15 + static numa_set_bind_policy_func_t _numa_set_bind_policy; 1.16 static unsigned long* _numa_all_nodes; 1.17 1.18 static void set_sched_getcpu(sched_getcpu_func_t func) { _sched_getcpu = func; } 1.19 @@ -236,6 +238,7 @@ 1.20 static void set_numa_available(numa_available_func_t func) { _numa_available = func; } 1.21 static void set_numa_tonode_memory(numa_tonode_memory_func_t func) { _numa_tonode_memory = func; } 1.22 static void set_numa_interleave_memory(numa_interleave_memory_func_t func) { _numa_interleave_memory = func; } 1.23 + static void set_numa_set_bind_policy(numa_set_bind_policy_func_t func) { _numa_set_bind_policy = func; } 1.24 static void set_numa_all_nodes(unsigned long* ptr) { _numa_all_nodes = ptr; } 1.25 static int sched_getcpu_syscall(void); 1.26 public: 1.27 @@ -253,6 +256,11 @@ 1.28 _numa_interleave_memory(start, size, _numa_all_nodes); 1.29 } 1.30 } 1.31 + static void numa_set_bind_policy(int policy) { 1.32 + if (_numa_set_bind_policy != NULL) { 1.33 + _numa_set_bind_policy(policy); 1.34 + } 1.35 + } 1.36 static int get_node_by_cpu(int cpu_id); 1.37 }; 1.38