From 94208c6eb2962da3ac93959ec3939316e500a6f0 Mon Sep 17 00:00:00 2001 From: Hiroki Noda <kubo39@gmail.com> Date: Tue, 14 Apr 2020 23:56:10 +0900 Subject: [PATCH] Add CPU_COUNT/CPU_COUNT_S revenge of #598 --- src/unix/linux_like/linux/mod.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/unix/linux_like/linux/mod.rs b/src/unix/linux_like/linux/mod.rs index 4f76812e..a01de9ce 100644 --- a/src/unix/linux_like/linux/mod.rs +++ b/src/unix/linux_like/linux/mod.rs @@ -2564,6 +2564,19 @@ f! { 0 != (cpuset.bits[idx] & (1 << offset)) } + pub fn CPU_COUNT_S(size: usize, cpuset: &cpu_set_t) -> ::c_int { + let mut s: u32 = 0; + let size_of_mask = ::mem::size_of_val(&cpuset.bits[0]); + for i in cpuset.bits[..(size / size_of_mask)].iter() { + s += i.count_ones(); + }; + s as ::c_int + } + + pub fn CPU_COUNT(cpuset: &cpu_set_t) -> ::c_int { + CPU_COUNT_S(::mem::size_of::<cpu_set_t>(), cpuset) + } + pub fn CPU_EQUAL(set1: &cpu_set_t, set2: &cpu_set_t) -> bool { set1.bits == set2.bits } -- GitLab