#include "naut/system.h" #include #include naut_err naut_pin_current_thread(int cpu) { int online = naut_online_cpus(); if (cpu < 0 || cpu >= online) return NAUT_ERR_RANGE; cpu_set_t set; CPU_ZERO(&set); CPU_SET((unsigned)cpu, &set); return sched_setaffinity(0, sizeof set, &set) == 0 ? NAUT_OK : NAUT_ERR_IO; } int naut_online_cpus(void) { long count = sysconf(_SC_NPROCESSORS_ONLN); return count > 0 && count <= INT32_MAX ? (int)count : 1; }