In the last episode (Jun 28): > I have system with 4 core cpu. How can I bind POSIX thread to the one > core? I mean that this thread can be executed on the fixed core.
See the cpuset(2) and cpuset_setaffinity(2) manpages. Something like this should work: #include <err.h> #include <stdio.h> #include <sys/param.h> #include <sys/cpuset.h> int main(void) { int i; cpuset_t myset; /* Get CPU mask for the current thread */ if (cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_TID, -1, sizeof(myset), &myset) == -1) err(1, "getaffinity failed"); /* Find first available CPU - don't assume CPU0 is always available */ for (i = 0; i < CPU_SETSIZE; i++) if (CPU_ISSET(i, &myset)) break; if (i == CPU_SETSIZE) err(1, "Not allowed to run on any CPUs? How did I print this, then?"); /* Set new CPU mask */ printf ("Setting affinity to CPU %d\n", i); CPU_ZERO(&myset); CPU_SET(i, &myset); if (cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_TID, -1, sizeof(myset), &myset) == -1) warn("setaffinity failed"); /* Do CPU-intensive stuff here */ return 0; } -- Dan Nelson dnel...@allantgroup.com _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"