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 › Uring › Group › cancelLocked Private Function cancelLocked Doc Source Private Function std.Io.Uring.Group.cancelLocked
fn cancelLocked (group : Group , ev : *Evented , maybe_awaiter : ?*Fiber ) bool Params File Io/Uring.zig: 1696
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722 fn cancelLocked (group : Group , ev : *Evented , maybe_awaiter : ?*Fiber ) bool {
const list_ptr = group .listPtr ();
const list = @atomicRmw (
List ,
list_ptr ,
.Add ,
.{ .cancel_requested = true , .awaiter_delayed = false , .fibers = .null },
.monotonic ,
);
assert (!list .cancel_requested );
if (list .fibers .unpack ()) |head | {
var maybe_fiber : ?*Fiber = head ;
while (maybe_fiber ) |fiber | {
fiber .requestCancel (ev );
maybe_fiber = fiber .link .group .next ;
}
if (maybe_awaiter ) |awaiter | _ = group .registerAwaiter (awaiter );
return false ;
}
@atomicStore (
List ,
list_ptr ,
.{ .cancel_requested = false , .awaiter_delayed = false , .fibers = .null },
.release ,
);
return if (maybe_awaiter ) |_ | true else list .awaiter_delayed ;
}
Assumes the mutex is held.