#include "sn_target.h" #include "StgSharpNative.h" #if SN_IS_OS(SN_OS_LINUX) #define _GNU_SOURCE #include #include #include /* Pin the calling thread to a single logical processor. * core_id >= 0 : bind to that logical processor (global index, across groups). * core_id < 0 : clear affinity constraint within the current group. */ SN_API void SN_DECL sn_set_thread_affinity(int core_id) { long ncpus = sysconf(_SC_NPROCESSORS_ONLN); cpu_set_t *set = CPU_ALLOC(ncpus); size_t size = CPU_ALLOC_SIZE(ncpus); CPU_ZERO_S(size, set); if (core_id < 0) { for (long i = 0; i < ncpus; i++) CPU_SET_S((int)i, size, set); } else { CPU_SET_S(core_id, size, set); } pthread_setaffinity_np(pthread_self(), size, set); CPU_FREE(set); } SN_API int SN_DECL sn_get_numa_overall(int *out_numa_count, int *count_of_each_numa) { (void)out_numa_count; (void)count_of_each_numa; return 0; } SN_API int SN_DECL sn_get_numa_each(int numa_id, uint64_t *in_numa_cpuid, uint64_t *global_cpuid) { (void)numa_id; (void)in_numa_cpuid; (void)global_cpuid; return 0; } #endif