aboutsummaryrefslogtreecommitdiff
path: root/lib/std/os.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2019-12-31 17:57:20 -0500
committerAndrew Kelley <andrew@ziglang.org>2019-12-31 17:57:20 -0500
commit0c8ec369f051d616434cff309fe737c52fd98199 (patch)
tree2a1cae5baadc8c45c4ab0f8c1d213e606976ea24 /lib/std/os.zig
parent8186211404552a31eaf2a7bc182a46a7e40eacda (diff)
downloadzig-0c8ec369f051d616434cff309fe737c52fd98199.tar.gz
zig-0c8ec369f051d616434cff309fe737c52fd98199.zip
std.os.memfd_create: add error.SystemOutdated
Diffstat (limited to 'lib/std/os.zig')
-rw-r--r--lib/std/os.zig7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/std/os.zig b/lib/std/os.zig
index b51dbe7d2a..878d1a57e7 100644
--- a/lib/std/os.zig
+++ b/lib/std/os.zig
@@ -3286,9 +3286,13 @@ pub const MemFdCreateError = error{
SystemFdQuotaExceeded,
ProcessFdQuotaExceeded,
OutOfMemory,
+
+ /// memfd_create is available in Linux 3.17 and later. This error is returned
+ /// for older kernel versions.
+ SystemOutdated,
} || UnexpectedError;
-pub fn memfd_createC(name: [*:0]const u8, flags: u32) !fd_t {
+pub fn memfd_createC(name: [*:0]const u8, flags: u32) MemFdCreateError!fd_t {
// memfd_create is available only in glibc versions starting with 2.27.
const use_c = std.c.versionCheck(.{ .major = 2, .minor = 27, .patch = 0 }).ok;
const sys = if (use_c) std.c else linux;
@@ -3301,6 +3305,7 @@ pub fn memfd_createC(name: [*:0]const u8, flags: u32) !fd_t {
ENFILE => return error.SystemFdQuotaExceeded,
EMFILE => return error.ProcessFdQuotaExceeded,
ENOMEM => return error.OutOfMemory,
+ ENOSYS => return error.SystemOutdated,
else => |err| return unexpectedErrno(err),
}
}