From 10a7cf58c1530e004e5ccb1a81f02aa86ab51dd1 Mon Sep 17 00:00:00 2001 From: David CARLIER Date: Tue, 9 May 2023 14:24:08 +0100 Subject: [PATCH] std.c: adding freebsd's domainset_t bitset --- lib/std/c/freebsd.zig | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/std/c/freebsd.zig b/lib/std/c/freebsd.zig index e035a408d0..ce694aa1db 100644 --- a/lib/std/c/freebsd.zig +++ b/lib/std/c/freebsd.zig @@ -10,7 +10,6 @@ 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| { @@ -2563,8 +2562,18 @@ pub const DOMAINSET = struct { pub const POLICY_MAX = DOMAINSET.POLICY_INTERLEAVE; }; +pub const DOMAINSET_SIZE = 256; pub const domainset_t = extern struct { + __bits: [(DOMAINSET_SIZE + (@sizeOf(domainset) - 1)) / @bitSizeOf(domainset)]domainset, +}; + +pub fn DOMAINSET_COUNT(set: domainset_t) c_int { + return @intCast(c_int, __BIT_COUNT(set.__bits[0..])); +} + +pub const domainset = extern struct { link: LIST_ENTRY, + mask: domainset_t, policy: u16, prefer: domainid_t, cnt: domainid_t,