feature. See also
. The project being documented here (as the example) is the Zig library itself.
c.siginfo_t
pub const siginfo_t = switch (native_os)
File
Code
pub const siginfo_t = switch (native_os) {
.linux => linux.siginfo_t,
.emscripten => emscripten.siginfo_t,
.driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => extern struct {
signo: SIG,
errno: c_int,
code: c_int,
pid: pid_t,
uid: uid_t,
status: c_int,
addr: *allowzero anyopaque,
value: extern union {
int: c_int,
ptr: *anyopaque,
},
si_band: c_long,
_pad: [7]c_ulong,
},
.freebsd => extern struct {
signo: SIG,
errno: c_int,
code: c_int,
pid: pid_t,
uid: uid_t,
status: c_int,
addr: *allowzero anyopaque,
value: sigval,
reason: extern union {
fault: extern struct {
trapno: c_int,
},
timer: extern struct {
timerid: c_int,
overrun: c_int,
},
mesgq: extern struct {
mqd: c_int,
},
poll: extern struct {
band: c_long,
},
spare: extern struct {
spare1: c_long,
spare2: [7]c_int,
},
},
},
.illumos => extern struct {
signo: SIG,
code: c_int,
errno: c_int,
// correctly aligning the reason field
reason: extern union {
proc: extern struct {
pid: pid_t,
pdata: extern union {
kill: extern struct {
uid: uid_t,
value: sigval_t,
},
cld: extern struct {
utime: clock_t,
status: c_int,
stime: clock_t,
},
},
contract: illumos.ctid_t,
zone: illumos.zoneid_t,
},
fault: extern struct {
addr: *allowzero anyopaque,
trapno: c_int,
pc: ?*anyopaque,
},
file: extern struct {
fd: c_int,
band: c_long,
},
prof: extern struct {
addr: ?*anyopaque,
timestamp: timespec,
syscall: c_short,
sysarg: u8,
fault: u8,
args: [8]c_long,
state: [10]c_int,
},
rctl: extern struct {
entity: i32,
},
__pad: [256 - 4 * @sizeOf(c_int)]u8,
} align(@sizeOf(usize)),
comptime {
assert(@sizeOf(@This()) == 256);
assert(@alignOf(@This()) == @sizeOf(usize));
}
},
.netbsd => extern union {
pad: [128]u8,
info: netbsd._ksiginfo,
},
.dragonfly => extern struct {
signo: SIG,
errno: c_int,
code: c_int,
pid: c_int,
uid: uid_t,
status: c_int,
addr: *allowzero anyopaque,
value: sigval,
band: c_long,
__spare__: [7]c_int,
},
.haiku => extern struct {
signo: SIG,
code: i32,
errno: i32,
pid: pid_t,
uid: uid_t,
addr: *allowzero anyopaque,
},
.openbsd => extern struct {
signo: SIG,
code: c_int,
errno: c_int,
data: extern union {
proc: extern struct {
pid: pid_t,
pdata: extern union {
kill: extern struct {
uid: uid_t,
value: sigval,
},
cld: extern struct {
utime: clock_t,
stime: clock_t,
status: c_int,
},
},
},
fault: extern struct {
addr: *allowzero anyopaque,
trapno: c_int,
},
__pad: [128 - 3 * @sizeOf(c_int)]u8,
},
},
.serenity => extern struct {
signo: SIG,
code: c_int,
errno: c_int,
pid: pid_t,
uid: uid_t,
addr: ?*anyopaque,
status: c_int,
band: c_int,
value: sigval,
},
else => void,
}