Source
pub const sem_t = switch (native_os) {
.linux, .emscripten => extern struct {
__size: [4 * @sizeOf(usize)]u8 align(@alignOf(usize)),
},
.macos, .ios, .tvos, .watchos, .visionos => c_int,
.freebsd => extern struct {
_magic: u32,
_kern: extern struct {
_count: u32,
_flags: u32,
},
_padding: u32,
},
.solaris, .illumos => extern struct {
count: u32 = 0,
type: u16 = 0,
magic: u16 = 0x534d,
__pad1: [3]u64 = [_]u64{0} ** 3,
__pad2: [2]u64 = [_]u64{0} ** 2,
},
.openbsd, .netbsd, .dragonfly => ?*opaque {},
.haiku => extern struct {
type: i32,
u: extern union {
named_sem_id: i32,
unnamed_sem: i32,
},
padding: [2]i32,
},
// https://github.com/SerenityOS/serenity/blob/aae106e37b48f2158e68902293df1e4bf7b80c0f/Userland/Libraries/LibC/semaphore.h#L23-L27
.serenity => extern struct {
magic: u32,
value: u32,
flags: u8,
},
else => void,
}