zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit ca012e5b69b9ff275c6e366c0348219d1c816f18 (tree)
parent 6976a5da19bf45f315eba2a0047977c6e659b2b3
Author: Jan Hendrik Farr <kernel@jfarr.cc>
Date:   Sun, 16 Jun 2024 03:29:34 +0200

std.posix: read on timerfd can return error.Canceled

Diffstat:
Mlib/compiler/fmt.zig | 1+
Mlib/std/posix.zig | 5+++++
Mlib/std/zig/system.zig | 1+
Msrc/link.zig | 1+
4 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/lib/compiler/fmt.zig b/lib/compiler/fmt.zig @@ -185,6 +185,7 @@ const FmtError = error{ BrokenPipe, Unexpected, WouldBlock, + Canceled, FileClosed, DestinationAddressRequired, DiskQuota, diff --git a/lib/std/posix.zig b/lib/std/posix.zig @@ -791,6 +791,10 @@ pub const ReadError = error{ /// and reading from the file descriptor would block. WouldBlock, + /// reading a timerfd with CANCEL_ON_SET will lead to this error + /// when the clock goes through a discontinuous change + Canceled, + /// In WASI, this error occurs when the file descriptor does /// not hold the required rights to read from it. AccessDenied, @@ -851,6 +855,7 @@ pub fn read(fd: fd_t, buf: []u8) ReadError!usize { .INVAL => unreachable, .FAULT => unreachable, .AGAIN => return error.WouldBlock, + .CANCELED => return error.Canceled, .BADF => return error.NotOpenForReading, // Can be a race condition. .IO => return error.InputOutput, .ISDIR => return error.IsDir, diff --git a/lib/std/zig/system.zig b/lib/std/zig/system.zig @@ -1141,6 +1141,7 @@ fn preadAtLeast(file: fs.File, buf: []u8, offset: u64, min_read_len: usize) !usi const len = file.pread(buf[i..], offset + i) catch |err| switch (err) { error.OperationAborted => unreachable, // Windows-only error.WouldBlock => unreachable, // Did not request blocking mode + error.Canceled => unreachable, // timerfd is unseekable error.NotOpenForReading => unreachable, error.SystemResources => return error.SystemResources, error.IsDir => return error.UnableToReadElfFile, diff --git a/src/link.zig b/src/link.zig @@ -350,6 +350,7 @@ pub const File = struct { SocketNotConnected, NotOpenForReading, WouldBlock, + Canceled, AccessDenied, Unexpected, DiskQuota,