Skip to content

Commit fb8d512

Browse files
committed
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.
2 parents b01a39a + 57dff10 commit fb8d512

File tree

1 file changed

+5
-5
lines changed
  • src/unix/bsd/freebsdlike/freebsd

1 file changed

+5
-5
lines changed

src/unix/bsd/freebsdlike/freebsd/mod.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3781,31 +3781,31 @@ f! {
37813781
}
37823782

37833783
pub fn CPU_SET(cpu: usize, cpuset: &mut cpuset_t) -> () {
3784-
let bitset_bits = ::mem::size_of::<::c_long>();
3784+
let bitset_bits = 8 * ::mem::size_of::<::c_long>();
37853785
let (idx, offset) = (cpu / bitset_bits, cpu % bitset_bits);
37863786
cpuset.__bits[idx] |= 1 << offset;
37873787
()
37883788
}
37893789

37903790
pub fn CPU_CLR(cpu: usize, cpuset: &mut cpuset_t) -> () {
3791-
let bitset_bits = ::mem::size_of::<::c_long>();
3791+
let bitset_bits = 8 * ::mem::size_of::<::c_long>();
37923792
let (idx, offset) = (cpu / bitset_bits, cpu % bitset_bits);
37933793
cpuset.__bits[idx] &= !(1 << offset);
37943794
()
37953795
}
37963796

37973797
pub fn CPU_ISSET(cpu: usize, cpuset: &cpuset_t) -> bool {
3798-
let bitset_bits = ::mem::size_of::<::c_long>();
3798+
let bitset_bits = 8 * ::mem::size_of::<::c_long>();
37993799
let (idx, offset) = (cpu / bitset_bits, cpu % bitset_bits);
38003800
0 != cpuset.__bits[idx] & (1 << offset)
38013801
}
38023802

38033803
pub fn CPU_COUNT(cpuset: &cpuset_t) -> ::c_int {
38043804
let mut s: u32 = 0;
38053805
let cpuset_size = ::mem::size_of::<cpuset_t>();
3806-
let bitset_bits = ::mem::size_of::<::c_long>();
3806+
let bitset_size = ::mem::size_of::<::c_long>();
38073807

3808-
for i in cpuset.__bits[..(cpuset_size / bitset_bits)].iter() {
3808+
for i in cpuset.__bits[..(cpuset_size / bitset_size)].iter() {
38093809
s += i.count_ones();
38103810
};
38113811
s as ::c_int

0 commit comments

Comments
 (0)