summaryrefslogtreecommitdiffstats
path: root/lib/libthr
diff options
context:
space:
mode:
authordavidxu <davidxu@FreeBSD.org>2010-10-27 09:29:03 +0000
committerdavidxu <davidxu@FreeBSD.org>2010-10-27 09:29:03 +0000
commitf8f25f57e2a01fbe6cab451733e71580e5353a4e (patch)
treeb5f37ad605d5d909d884036425adb213a9833bb7 /lib/libthr
parent73924f958881faa65dcbe928ea800fb849035b3a (diff)
downloadFreeBSD-src-f8f25f57e2a01fbe6cab451733e71580e5353a4e.zip
FreeBSD-src-f8f25f57e2a01fbe6cab451733e71580e5353a4e.tar.gz
- Revert r214409.
- Use long word to figure out sizeof kernel cpuset, hope it works.
Diffstat (limited to 'lib/libthr')
-rw-r--r--lib/libthr/thread/thr_attr.c11
1 files changed, 6 insertions, 5 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);
OpenPOWER on IntegriCloud