summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/libthr/thread/thr_attr.c11
-rw-r--r--sys/kern/kern_cpuset.c4
2 files changed, 6 insertions, 9 deletions
diff --git a/lib/libthr/thread/thr_attr.c b/lib/libthr/thread/thr_attr.c
index 7fe50034..bc8eabb 100644
--- a/lib/libthr/thread/thr_attr.c
+++ b/lib/libthr/thread/thr_attr.c
@@ -574,13 +574,14 @@ _get_kern_cpuset_size(void)
if (kern_cpuset_size == 0) {
size_t len;
+ int maxcpus;
- len = sizeof(kern_cpuset_size);
- if (sysctlbyname("kern.smp.maxcpus", &kern_cpuset_size,
- &len, NULL, 0))
+ len = sizeof(maxcpus);
+ if (sysctlbyname("kern.smp.maxcpus", &maxcpus, &len, NULL, 0))
PANIC("failed to get sysctl kern.smp.maxcpus");
-
- kern_cpuset_size = (kern_cpuset_size + 7) / 8;
+ int nbits_long = sizeof(long) * NBBY;
+ int num_long = (maxcpus + nbits_long - 1) / nbits_long;
+ kern_cpuset_size = num_long * sizeof(long);
}
return (kern_cpuset_size);
diff --git a/sys/kern/kern_cpuset.c b/sys/kern/kern_cpuset.c
index b4601f1..23aa9df 100644
--- a/sys/kern/kern_cpuset.c
+++ b/sys/kern/kern_cpuset.c
@@ -889,10 +889,6 @@ cpuset_getaffinity(struct thread *td, struct cpuset_getaffinity_args *uap)
int error;
size_t size;
- if (uap->cpusetsize == 0) {
- td->td_retval[0] = sizeof(cpuset_t);
- return (0);
- }
if (uap->cpusetsize < sizeof(cpuset_t) ||
uap->cpusetsize > CPU_MAXSIZE / NBBY)
return (ERANGE);
OpenPOWER on IntegriCloud