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 › Dispatch › futexWake Private Function futexWake Doc Source Private Function std.Io.Dispatch.futexWake
fn futexWake (userdata : ?*anyopaque , ptr : *const u32 , max_waiters : u32 ) void Params userdata : ?*anyopaque ptr : *const u32 max_waiters : u32 File Io/Dispatch.zig: 1678
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690 fn futexWake (userdata : ?*anyopaque , ptr : *const u32 , max_waiters : u32 ) void {
const ev : *Evented = @ptrCast (@alignCast (userdata ));
if (max_waiters == 0 ) return ;
const futex = ev .futexForAddress (@intFromPtr (ptr ));
switch (@atomicRmw (usize , &futex .num_waiters , .Add , 0 , .release )) {
0 => return ,
else => {
@branchHint (.unlikely );
var waker : Futex .Waker = .{ .futex = futex , .ptr = ptr , .max_waiters = max_waiters };
ev .yield (.{ .futex_wake = &waker });
},
}
}