std: update bsd bits to new fn ptr semantics

This commit is contained in:
Andrew Kelley
2022-07-04 13:02:13 -07:00
parent e3274067f8
commit 9c5056788f
7 changed files with 79 additions and 27 deletions

View File

@@ -911,17 +911,18 @@ pub const siginfo_t = extern struct {
/// Renamed from `sigaction` to `Sigaction` to avoid conflict with function name.
pub const Sigaction = extern struct {
pub usingnamespace if (builtin.zig_backend == .stage1) struct {
pub const handler_fn = fn (c_int) callconv(.C) void;
pub const sigaction_fn = fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void;
} else struct {
pub const handler_fn = *const fn (c_int) callconv(.C) void;
pub const sigaction_fn = *const fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void;
pub const handler_fn = switch (builtin.zig_backend) {
.stage1 => fn (c_int) callconv(.C) void,
else => *const fn (c_int) callconv(.C) void,
};
pub const sigaction_fn = switch (builtin.zig_backend) {
.stage1 => fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void,
else => *const fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void,
};
handler: extern union {
handler: ?Sigaction.handler_fn,
sigaction: ?Sigaction.sigaction_fn,
handler: ?handler_fn,
sigaction: ?sigaction_fn,
},
mask: sigset_t,
flags: c_uint,

View File

@@ -1,3 +1,4 @@
const builtin = @import("builtin");
const std = @import("../std.zig");
const maxInt = std.math.maxInt;
const iovec = std.os.iovec;
@@ -12,7 +13,10 @@ pub extern "c" fn sigaltstack(ss: ?*stack_t, old_ss: ?*stack_t) c_int;
pub extern "c" fn getrandom(buf_ptr: [*]u8, buf_len: usize, flags: c_uint) isize;
pub extern "c" fn pipe2(fds: *[2]fd_t, flags: u32) c_int;
pub const dl_iterate_phdr_callback = fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int;
pub const dl_iterate_phdr_callback = switch (builtin.zig_backend) {
.stage1 => fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int,
else => *const fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int,
};
pub extern "c" fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*anyopaque) c_int;
pub extern "c" fn lwp_gettid() c_int;
@@ -679,8 +683,14 @@ pub const empty_sigset = sigset_t{ .__bits = [_]c_uint{0} ** _SIG_WORDS };
pub const sig_atomic_t = c_int;
pub const Sigaction = extern struct {
pub const handler_fn = fn (c_int) callconv(.C) void;
pub const sigaction_fn = fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void;
pub const handler_fn = switch (builtin.zig_backend) {
.stage1 => fn (c_int) callconv(.C) void,
else => *const fn (c_int) callconv(.C) void,
};
pub const sigaction_fn = switch (builtin.zig_backend) {
.stage1 => fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void,
else => *const fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void,
};
/// signal handler
handler: extern union {

View File

@@ -35,7 +35,10 @@ pub extern "c" fn sendfile(
flags: u32,
) c_int;
pub const dl_iterate_phdr_callback = fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int;
pub const dl_iterate_phdr_callback = switch (builtin.zig_backend) {
.stage1 => fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int,
else => *const fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int,
};
pub extern "c" fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*anyopaque) c_int;
pub const pthread_mutex_t = extern struct {
@@ -998,8 +1001,14 @@ const NSIG = 32;
/// Renamed from `sigaction` to `Sigaction` to avoid conflict with the syscall.
pub const Sigaction = extern struct {
pub const handler_fn = fn (c_int) callconv(.C) void;
pub const sigaction_fn = fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void;
pub const handler_fn = switch (builtin.zig_backend) {
.stage1 => fn (c_int) callconv(.C) void,
else => *const fn (c_int) callconv(.C) void,
};
pub const sigaction_fn = switch (builtin.zig_backend) {
.stage1 => fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void,
else => *const fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void,
};
/// signal handler
handler: extern union {

View File

@@ -463,9 +463,9 @@ pub const SA = struct {
};
pub const SIG = struct {
pub const ERR = @intToPtr(fn (i32) callconv(.C) void, maxInt(usize));
pub const DFL = @intToPtr(fn (i32) callconv(.C) void, 0);
pub const IGN = @intToPtr(fn (i32) callconv(.C) void, 1);
pub const ERR = @intToPtr(?Sigaction.handler_fn, maxInt(usize));
pub const DFL = @intToPtr(?Sigaction.handler_fn, 0);
pub const IGN = @intToPtr(?Sigaction.handler_fn, 1);
pub const HUP = 1;
pub const INT = 2;
@@ -738,9 +738,14 @@ const NSIG = 32;
/// Renamed from `sigaction` to `Sigaction` to avoid conflict with the syscall.
pub const Sigaction = extern struct {
pub const handler_fn = switch (builtin.zig_backend) {
.stage1 => fn (i32) callconv(.C) void,
else => *const fn (i32) callconv(.C) void,
};
/// signal handler
__sigaction_u: extern union {
__sa_handler: fn (i32) callconv(.C) void,
__sa_handler: handler_fn,
},
/// see signal options

View File

@@ -9,7 +9,10 @@ const rusage = std.c.rusage;
extern "c" fn __errno() *c_int;
pub const _errno = __errno;
pub const dl_iterate_phdr_callback = fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int;
pub const dl_iterate_phdr_callback = switch (builtin.zig_backend) {
.stage1 => fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int,
else => *const fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int,
};
pub extern "c" fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*anyopaque) c_int;
pub extern "c" fn _lwp_self() lwpid_t;
@@ -971,8 +974,14 @@ pub const SIG = struct {
/// Renamed from `sigaction` to `Sigaction` to avoid conflict with the syscall.
pub const Sigaction = extern struct {
pub const handler_fn = fn (c_int) callconv(.C) void;
pub const sigaction_fn = fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void;
pub const handler_fn = switch (builtin.zig_backend) {
.stage1 => fn (c_int) callconv(.C) void,
else => *const fn (c_int) callconv(.C) void,
};
pub const sigaction_fn = switch (builtin.zig_backend) {
.stage1 => fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void,
else => *const fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void,
};
/// signal handler
handler: extern union {

View File

@@ -7,7 +7,10 @@ const iovec_const = std.os.iovec_const;
extern "c" fn __errno() *c_int;
pub const _errno = __errno;
pub const dl_iterate_phdr_callback = fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int;
pub const dl_iterate_phdr_callback = switch (builtin.zig_backend) {
.stage1 => fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int,
else => *const fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int,
};
pub extern "c" fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*anyopaque) c_int;
pub extern "c" fn arc4random_buf(buf: [*]u8, len: usize) void;
@@ -1026,8 +1029,14 @@ pub const SIG = struct {
/// Renamed from `sigaction` to `Sigaction` to avoid conflict with the syscall.
pub const Sigaction = extern struct {
pub const handler_fn = fn (c_int) callconv(.C) void;
pub const sigaction_fn = fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void;
pub const handler_fn = switch (builtin.zig_backend) {
.stage1 => fn (c_int) callconv(.C) void,
else => *const fn (c_int) callconv(.C) void,
};
pub const sigaction_fn = switch (builtin.zig_backend) {
.stage1 => fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void,
else => *const fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void,
};
/// signal handler
handler: extern union {

View File

@@ -8,7 +8,10 @@ const timezone = std.c.timezone;
extern "c" fn ___errno() *c_int;
pub const _errno = ___errno;
pub const dl_iterate_phdr_callback = fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int;
pub const dl_iterate_phdr_callback = switch (builtin.zig_backend) {
.stage1 => fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int,
else => *const fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int,
};
pub extern "c" fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*anyopaque) c_int;
pub extern "c" fn getdents(fd: c_int, buf_ptr: [*]u8, nbytes: usize) usize;
@@ -952,8 +955,14 @@ pub const SIG = struct {
/// Renamed from `sigaction` to `Sigaction` to avoid conflict with the syscall.
pub const Sigaction = extern struct {
pub const handler_fn = fn (c_int) callconv(.C) void;
pub const sigaction_fn = fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void;
pub const handler_fn = switch (builtin.zig_backend) {
.stage1 => fn (c_int) callconv(.C) void,
else => *const fn (c_int) callconv(.C) void,
};
pub const sigaction_fn = switch (builtin.zig_backend) {
.stage1 => fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void,
else => *const fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void,
};
/// signal options
flags: c_uint,