int numa_init(void) { const struct numa_functions funcs = numa_funcs; int ret = 0; if (init_config == 0) { init_configuration(); } if (numaInitialized == 1) { return 0; } if ((config.topologyCfgFileName == NULL)||(access(config.topologyCfgFileName, R_OK) && numa_info.numberOfNodes <= 0)) { cpu_set_t cpuSet; CPU_ZERO(&cpuSet); sched_getaffinity(0,sizeof(cpu_set_t), &cpuSet); if (cpuid_topology.activeHWThreads < cpuid_topology.numHWThreads) { ret = proc_numa_init(); } else { ret = funcs.numa_init(); } } numaInitialized = 1; return ret; }
int numa_init(void) { const struct numa_functions funcs = numa_funcs; int ret = 0; if (init_config == 0) { init_configuration(); } if (numaInitialized == 1) { return 0; } if ((config.topologyCfgFileName != NULL) && (!access(config.topologyCfgFileName, R_OK)) && (numa_info.nodes != NULL)) { /* If we read in the topology file, the NUMA related stuff is already initialized */ numaInitialized = 1; return 0; } else { cpu_set_t cpuSet; CPU_ZERO(&cpuSet); sched_getaffinity(0,sizeof(cpu_set_t), &cpuSet); if (cpuid_topology.activeHWThreads < cpuid_topology.numHWThreads) { ret = proc_numa_init(); } else { ret = funcs.numa_init(); } if (ret == 0) numaInitialized = 1; } return ret; }