diff --git a/lib/compiler/fmt.zig b/lib/compiler/fmt.zig index e549a05bdd..c747addd72 100644 --- 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 index 296b7f9d53..bc270395cc 100644 --- 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 index 2c2f81825a..fe3394b615 100644 --- 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 index f4ba9879fa..d8a09b689f 100644 --- a/src/link.zig +++ b/src/link.zig @@ -350,6 +350,7 @@ pub const File = struct { SocketNotConnected, NotOpenForReading, WouldBlock, + Canceled, AccessDenied, Unexpected, DiskQuota,