authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-10-16 21:17:05+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-10-22 22:15:32+02:00
log3b8f1e655357523f50752296093e56da53ca287f
treecb8b225f1671a82741c322a23fb5ab2166287199
parentda1b245719e37fbf1db7279530dedec5f2d44647
signature Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.c: fix ioctl() signature for freebsd and openbsd


4 files changed, 13 insertions(+), 1 deletions(-)

lib/std/c.zig+4-1
...@@ -11430,6 +11430,9 @@ pub const clock_nanosleep = switch (native_os) {...@@ -11430,6 +11430,9 @@ pub const clock_nanosleep = switch (native_os) {
11430};11430};
1143111431
11432pub const ioctl = switch (native_os) {11432pub const ioctl = switch (native_os) {
11433 .dragonfly => dragonfly.ioctl,
11434 .freebsd => freebsd.ioctl,
11435 .openbsd => openbsd.ioctl,
11433 .windows => {},11436 .windows => {},
11434 else => private.ioctl,11437 else => private.ioctl,
11435};11438};
...@@ -11897,7 +11900,7 @@ const private = struct {...@@ -11897,7 +11900,7 @@ const private = struct {
11897 };11900 };
11898 extern "c" fn getrusage(who: c_int, usage: *rusage) c_int;11901 extern "c" fn getrusage(who: c_int, usage: *rusage) c_int;
11899 extern "c" fn gettimeofday(noalias tv: ?*timeval, noalias tz: ?*timezone) c_int;11902 extern "c" fn gettimeofday(noalias tv: ?*timeval, noalias tz: ?*timezone) c_int;
11900 extern "c" fn ioctl(fd: fd_t, request: if (native_os == .dragonfly) c_ulong else c_int, ...) c_int;11903 extern "c" fn ioctl(fd: fd_t, request: c_int, ...) c_int;
11901 extern "c" fn msync(addr: *align(page_size) const anyopaque, len: usize, flags: c_int) c_int;11904 extern "c" fn msync(addr: *align(page_size) const anyopaque, len: usize, flags: c_int) c_int;
11902 extern "c" fn mremap(addr: ?*align(page_size) const anyopaque, old_len: usize, new_len: usize, flags: MREMAP, ...) *anyopaque;11905 extern "c" fn mremap(addr: ?*align(page_size) const anyopaque, old_len: usize, new_len: usize, flags: MREMAP, ...) *anyopaque;
11903 extern "c" fn nanosleep(rqtp: *const timespec, rmtp: ?*timespec) c_int;11906 extern "c" fn nanosleep(rqtp: *const timespec, rmtp: ?*timespec) c_int;
lib/std/c/dragonfly.zig+3
...@@ -8,9 +8,12 @@ const pid_t = std.c.pid_t;...@@ -8,9 +8,12 @@ const pid_t = std.c.pid_t;
8const sockaddr = std.c.sockaddr;8const sockaddr = std.c.sockaddr;
9const socklen_t = std.c.socklen_t;9const socklen_t = std.c.socklen_t;
10const uid_t = std.c.uid_t;10const uid_t = std.c.uid_t;
11const fd_t = std.c.fd_t;
11const NI = std.c.NI;12const NI = std.c.NI;
12const EAI = std.c.EAI;13const EAI = std.c.EAI;
1314
15pub extern "c" fn ioctl(fd: fd_t, request: c_ulong, ...) c_int;
16
14pub extern "c" fn lwp_gettid() c_int;17pub extern "c" fn lwp_gettid() c_int;
15pub extern "c" fn ptrace(request: c_int, pid: pid_t, addr: caddr_t, data: c_int) c_int;18pub extern "c" fn ptrace(request: c_int, pid: pid_t, addr: caddr_t, data: c_int) c_int;
16pub extern "c" fn umtx_sleep(ptr: *const volatile c_int, value: c_int, timeout: c_int) c_int;19pub extern "c" fn umtx_sleep(ptr: *const volatile c_int, value: c_int, timeout: c_int) c_int;
lib/std/c/freebsd.zig+2
...@@ -30,6 +30,8 @@ comptime {...@@ -30,6 +30,8 @@ comptime {
30 assert(builtin.os.tag == .freebsd); // Prevent access of std.c symbols on wrong OS.30 assert(builtin.os.tag == .freebsd); // Prevent access of std.c symbols on wrong OS.
31}31}
3232
33pub extern "c" fn ioctl(fd: fd_t, request: c_ulong, ...) c_int;
34
33pub extern "c" fn ptrace(request: c_int, pid: pid_t, addr: caddr_t, data: c_int) c_int;35pub extern "c" fn ptrace(request: c_int, pid: pid_t, addr: caddr_t, data: c_int) c_int;
3436
35pub extern "c" fn kinfo_getfile(pid: pid_t, cntp: *c_int) ?[*]kinfo_file;37pub extern "c" fn kinfo_getfile(pid: pid_t, cntp: *c_int) ?[*]kinfo_file;
lib/std/c/openbsd.zig+4
...@@ -9,6 +9,7 @@ const passwd = std.c.passwd;...@@ -9,6 +9,7 @@ const passwd = std.c.passwd;
9const timespec = std.c.timespec;9const timespec = std.c.timespec;
10const uid_t = std.c.uid_t;10const uid_t = std.c.uid_t;
11const pid_t = std.c.pid_t;11const pid_t = std.c.pid_t;
12const fd_t = std.c.fd_t;
12const sockaddr = std.c.sockaddr;13const sockaddr = std.c.sockaddr;
13const socklen_t = std.c.socklen_t;14const socklen_t = std.c.socklen_t;
14const NI = std.c.NI;15const NI = std.c.NI;
...@@ -17,6 +18,9 @@ const EAI = std.c.EAI;...@@ -17,6 +18,9 @@ const EAI = std.c.EAI;
17comptime {18comptime {
18 assert(builtin.os.tag == .openbsd); // Prevent access of std.c symbols on wrong OS.19 assert(builtin.os.tag == .openbsd); // Prevent access of std.c symbols on wrong OS.
19}20}
21
22pub extern "c" fn ioctl(fd: fd_t, request: c_ulong, ...) c_int;
23
20pub extern "c" fn getnameinfo(24pub extern "c" fn getnameinfo(
21 noalias addr: *const sockaddr,25 noalias addr: *const sockaddr,
22 addrlen: socklen_t,26 addrlen: socklen_t,