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