void * spdk_call_unaffinitized(void *cb(void *arg), void *arg) { rte_cpuset_t orig_cpuset, new_cpuset; void *ret; long num_cores, i; if (cb == NULL) { return NULL; } rte_thread_get_affinity(&orig_cpuset); CPU_ZERO(&new_cpuset); num_cores = sysconf(_SC_NPROCESSORS_CONF); /* Create a mask containing all CPUs */ for (i = 0; i < num_cores; i++) { CPU_SET(i, &new_cpuset); } rte_thread_set_affinity(&new_cpuset); ret = cb(arg); rte_thread_set_affinity(&orig_cpuset); return ret; }
/* set affinity for current EAL thread */ static int eal_thread_set_affinity(void) { unsigned lcore_id = rte_lcore_id(); /* acquire system unique id */ rte_gettid(); /* update EAL thread core affinity */ return rte_thread_set_affinity(&lcore_config[lcore_id].cpuset); }