Zig 0.17.0-dev (Split by item) This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig standard library.
std › Io › Threaded › AlertableSyscall › checkCancel Private Function checkCancel Doc Source Private Function std.Io.Threaded.AlertableSyscall.checkCancel
fn checkCancel (s : AlertableSyscall ) Io .Cancelable !void Params File Io/Threaded.zig: 1497
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518 fn checkCancel (s : AlertableSyscall ) Io .Cancelable !void {
comptime assert (is_windows );
const thread = s .thread orelse return ;
const old_status = thread .status .fetchOr (.{
.cancelation = @fromBackingInt (@intCast (0b010 )),
.awaitable = .null ,
}, .monotonic );
switch (old_status .cancelation ) {
.none => unreachable ,
.parked => unreachable ,
.blocked => unreachable ,
.blocked_canceling => unreachable ,
.canceling => unreachable ,
.canceled => unreachable ,
.blocked_alertable => {}, // new status is `.blocked_alertable` (unchanged)
.blocked_alertable_canceling => {
// New status is `.canceling`---change to `.canceled` before return.
thread .status .store (.{ .cancelation = .canceled , .awaitable = old_status .awaitable }, .monotonic );
return error .Canceled ;
},
}
}