diff options
author | bors <bors@rust-lang.org> | 2022-07-12 09:34:09 +0000 |
---|---|---|
committer | bors <bors@rust-lang.org> | 2022-07-12 09:34:09 +0000 |
commit | fb8d512a6a4ab7c1b1b0bb400ddb06f435bfc2a2 (patch) | |
tree | 3f1d131b6fa7034ffcfdebc666a5c0b4114ce3c9 | |
parent | b01a39a237c65438849124bcf1d6d7e73b0edcb4 (diff) | |
parent | 57dff108b9b2331c463b4f79d9c349084a70b8e5 (diff) | |
download | rust-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.rs | 10 |
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 |