Commit b9841750f9

David CARLIER <devnexen@gmail.com>
2023-05-02 21:16:19
std.c: adding freebsd's CPU_COUNT macro portage.
1 parent 152c7b1
Changed files (1)
lib
lib/std/c/freebsd.zig
@@ -9,6 +9,20 @@ pub const CPU_SETSIZE = 256;
 pub const cpuset_t = extern struct {
     __bits: [(CPU_SETSIZE + (@bitSizeOf(c_long) - 1)) / @bitSizeOf(c_long)]c_long,
 };
+
+// TODO: can eventually serve for the domainset_t's type too.
+fn __BIT_COUNT(bits: []const c_long) c_long {
+    var count: c_long = 0;
+    for (bits) |b| {
+        count += @popCount(b);
+    }
+    return count;
+}
+
+pub fn CPU_COUNT(set: cpuset_t) c_int {
+    return @intCast(c_int, __BIT_COUNT(set.__bits[0..]));
+}
+
 pub const cpulevel_t = c_int;
 pub const cpuwhich_t = c_int;
 pub const id_t = i64;