From 38646b845ebf9ce68ab7df894d162de6e7904a39 Mon Sep 17 00:00:00 2001 From: Hiroki Noda Date: Tue, 23 May 2017 18:42:40 +0900 Subject: [PATCH] Add CPU_COUNT --- src/unix/notbsd/linux/mod.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/unix/notbsd/linux/mod.rs b/src/unix/notbsd/linux/mod.rs index b9375a36fa794..5056bb1d53ea6 100644 --- a/src/unix/notbsd/linux/mod.rs +++ b/src/unix/notbsd/linux/mod.rs @@ -18,6 +18,7 @@ pub type msglen_t = ::c_ulong; pub type nfds_t = ::c_ulong; pub type nl_item = ::c_int; pub type idtype_t = ::c_uint; +pub type __cpu_mask = ::c_ulong; pub enum fpos64_t {} // TODO: fill this out with a struct @@ -732,6 +733,16 @@ f! { 0 != (cpuset.bits[idx] & (1 << offset)) } + pub fn CPU_COUNT(cpuset: &cpu_set_t) -> ::c_int { + let mut s: u32 = 0; + let setsize = mem::size_of::(); + let cpu_mask_size = mem::size_of::<__cpu_mask>(); + for i in cpuset.bits[..(setsize / cpu_mask_size)].iter() { + s += i.count_ones() + }; + s as ::c_int + } + pub fn CPU_EQUAL(set1: &cpu_set_t, set2: &cpu_set_t) -> bool { set1.bits == set2.bits }