以下のコードの抜粋は、指定した PID の CPU アフィニティー情報を取得します。これに渡される PID が 0 の場合は、現在のプロセスのアフィニティー情報を返します。
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <sched.h>
int main(int argc, char **argv)
{
int i, online=0;
ulong ncores = sysconf(_SC_NPROCESSORS_CONF);
cpu_set_t *setp = CPU_ALLOC(ncores);
ulong setsz = CPU_ALLOC_SIZE(ncores);
CPU_ZERO_S(setsz, setp);
if (sched_getaffinity(0, setsz, setp) == -1) {
perror("sched_getaffinity(2) failed");
exit(errno);
}
for (i=0; i < CPU_COUNT_S(setsz, setp); i++) {
if (CPU_ISSET_S(i, setsz, setp))
online++;
}
printf("%d cores configured, %d cpus allowed in affinity mask\n", ncores, online);
CPU_FREE(setp);
}
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <sched.h>
int main(int argc, char **argv)
{
int i, online=0;
ulong ncores = sysconf(_SC_NPROCESSORS_CONF);
cpu_set_t *setp = CPU_ALLOC(ncores);
ulong setsz = CPU_ALLOC_SIZE(ncores);
CPU_ZERO_S(setsz, setp);
if (sched_getaffinity(0, setsz, setp) == -1) {
perror("sched_getaffinity(2) failed");
exit(errno);
}
for (i=0; i < CPU_COUNT_S(setsz, setp); i++) {
if (CPU_ISSET_S(i, setsz, setp))
online++;
}
printf("%d cores configured, %d cpus allowed in affinity mask\n", ncores, online);
CPU_FREE(setp);
}
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow