diff --git a/lib/libc/gen/sched_getaffinity.c b/lib/libc/gen/sched_getaffinity.c --- a/lib/libc/gen/sched_getaffinity.c +++ b/lib/libc/gen/sched_getaffinity.c @@ -54,3 +54,25 @@ errno = EINVAL; return (error); } + +int +cpuset_getmyaffinity_count(void) +{ + char *cac, *errstr; + cpuset_t mask; + int count; + + cac = getenv("CPUSET_AFFINITY_COUNT"); + if (cac != NULL) { + count = strtonum(optarg, 0, INT_MAX, &errstr); + if (errstr != NULL) + return (-1); + return (count); + } + if (cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_TID, -1, sizeof(mask), + &mask) == 0) { + return CPU_COUNT(&mask); + } + + return (-1); +}