summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2022-07-12 09:34:09 +0000
committerbors <bors@rust-lang.org>2022-07-12 09:34:09 +0000
commitfb8d512a6a4ab7c1b1b0bb400ddb06f435bfc2a2 (patch)
tree3f1d131b6fa7034ffcfdebc666a5c0b4114ce3c9
parentb01a39a237c65438849124bcf1d6d7e73b0edcb4 (diff)
parent57dff108b9b2331c463b4f79d9c349084a70b8e5 (diff)
downloadrust-libc-fb8d512a6a4ab7c1b1b0bb400ddb06f435bfc2a2.tar.gz
Auto merge of #2842 - rtzoeller:freebsd-cpu-macros, r=Amanieu
Fix FreeBSD CPU_ macros The current definitions conflate bits and bytes, leading to panics. Found while trying to add support for `nix::sched::sched_setaffinity` to FreeBSD.
-rw-r--r--src/unix/bsd/freebsdlike/freebsd/mod.rs10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/unix/bsd/freebsdlike/freebsd/mod.rs b/src/unix/bsd/freebsdlike/freebsd/mod.rs
index 43686d3f51..84e43b23e5 100644
--- a/src/unix/bsd/freebsdlike/freebsd/mod.rs
+++ b/src/unix/bsd/freebsdlike/freebsd/mod.rs
@@ -3781,21 +3781,21 @@ f! {
}
pub fn CPU_SET(cpu: usize, cpuset: &mut cpuset_t) -> () {
- let bitset_bits = ::mem::size_of::<::c_long>();
+ let bitset_bits = 8 * ::mem::size_of::<::c_long>();
let (idx, offset) = (cpu / bitset_bits, cpu % bitset_bits);
cpuset.__bits[idx] |= 1 << offset;
()
}
pub fn CPU_CLR(cpu: usize, cpuset: &mut cpuset_t) -> () {
- let bitset_bits = ::mem::size_of::<::c_long>();
+ let bitset_bits = 8 * ::mem::size_of::<::c_long>();
let (idx, offset) = (cpu / bitset_bits, cpu % bitset_bits);
cpuset.__bits[idx] &= !(1 << offset);
()
}
pub fn CPU_ISSET(cpu: usize, cpuset: &cpuset_t) -> bool {
- let bitset_bits = ::mem::size_of::<::c_long>();
+ let bitset_bits = 8 * ::mem::size_of::<::c_long>();
let (idx, offset) = (cpu / bitset_bits, cpu % bitset_bits);
0 != cpuset.__bits[idx] & (1 << offset)
}
@@ -3803,9 +3803,9 @@ f! {
pub fn CPU_COUNT(cpuset: &cpuset_t) -> ::c_int {
let mut s: u32 = 0;
let cpuset_size = ::mem::size_of::<cpuset_t>();
- let bitset_bits = ::mem::size_of::<::c_long>();
+ let bitset_size = ::mem::size_of::<::c_long>();
- for i in cpuset.__bits[..(cpuset_size / bitset_bits)].iter() {
+ for i in cpuset.__bits[..(cpuset_size / bitset_size)].iter() {
s += i.count_ones();
};
s as ::c_int