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 library itself.
Zig › std/ › os/ › linux/ › IoUring.zig › CompletionQueue
CompletionQueue
IoUring.CompletionQueue
pub const CompletionQueue = struct
File
Code
pub const CompletionQueue = struct {
head : *u32 ,
tail : *u32 ,
mask : u32 ,
overflow : *u32 ,
cqes : []linux .io_uring_cqe ,
pub fn init (fd : linux .fd_t , p : linux .io_uring_params , sq : SubmissionQueue ) !CompletionQueue {
assert (fd >= 0 );
assert ((p .features & linux .IORING_FEAT_SINGLE_MMAP ) != 0 );
const mmap = sq .mmap ;
const cqes : [*]linux .io_uring_cqe = @ptrCast (@alignCast (&mmap [p .cq_off .cqes ]));
assert (p .cq_entries == @as (*u32 , @ptrCast (@alignCast (&mmap [p .cq_off .ring_entries ]))).*);
return CompletionQueue {
.head = @ptrCast (@alignCast (&mmap [p .cq_off .head ])),
.tail = @ptrCast (@alignCast (&mmap [p .cq_off .tail ])),
.mask = @as (*u32 , @ptrCast (@alignCast (&mmap [p .cq_off .ring_mask ]))).*,
.overflow = @ptrCast (@alignCast (&mmap [p .cq_off .overflow ])),
.cqes = cqes [0 ..p .cq_entries ],
};
}
pub fn deinit (self : *CompletionQueue ) void {
_ = self ;
// Here for symmetry with the submission queue, and for any future feature support.
}
}