diff --git a/mod.zig b/mod.zig index 0adf8ccae38f16a2de1d2a14eb15b89788b5e51e..8e858095c92e8d42271a6d09c95e1c0b291bf746 100644 --- a/mod.zig +++ b/mod.zig @@ -2632,6 +2632,7 @@ pub const libc = struct { pub extern fn __errno_location() *c_int; pub extern fn gettid() pid_t; pub extern fn accept4(socket: c_int, noalias address: ?*struct_sockaddr, noalias address_len: *socklen_t, flags: c_int) c_int; + pub extern fn memfd_create(name: [*:0]const u8, flags: c_uint) c_int; }; pub const clock_t = c_long; @@ -3130,3 +3131,9 @@ pub fn clock_gettime(clock_id: clockid_t) !struct_timespec { std.debug.assert(rc == 0); return tp; } +pub fn memfd_create(name: [*:0]const u8, flags: c_uint) !c_int { + const rc = libc.memfd_create(name, flags); + if (rc == -1) return errno.fromInt(errno.fromLibC()); + std.debug.assert(rc >= 0); + return rc; +} diff --git a/test.zig b/test.zig index ff8468da0655681e71d891c00452fd87e90015fc..fa77a4ada674e8f42c3c8154c816fbc981f4e5a8 100644 --- a/test.zig +++ b/test.zig @@ -28,4 +28,5 @@ test { _ = &linux.getaddrinfo; _ = &linux.freeaddrinfo; _ = &linux.clock_gettime; + _ = &linux.memfd_create; }