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/ › Io/ › Threaded.zig › fileMemoryMapDestroy
fileMemoryMapDestroy
Threaded.fileMemoryMapDestroy
fn fileMemoryMapDestroy (userdata : ?*anyopaque , mm : *File .MemoryMap ) void
File
Code
fn fileMemoryMapDestroy (userdata : ?*anyopaque , mm : *File .MemoryMap ) void {
const t : *Threaded = @ptrCast (@alignCast (userdata ));
const memory = mm .memory ;
if (mm .section ) |section | switch (native_os ) {
.windows => {
if (section == windows .INVALID_HANDLE_VALUE ) return ;
_ = windows .ntdll .NtUnmapViewOfSection (windows .current_process , memory .ptr );
windows .CloseHandle (section );
},
.wasi => unreachable ,
else => {
if (memory .len == 0 ) return ;
switch (posix .errno (posix .system .munmap (memory .ptr , memory .len ))) {
.SUCCESS => {},
else => |e | {
if (builtin .mode == .debug )
std .log .err ("failed to unmap {d} bytes at {*}: {t}" , .{ memory .len , memory .ptr , e });
},
}
},
} else {
const gpa = t .allocator ;
gpa .rawFree (memory , .fromByteUnits (std .heap .pageSize ()), @returnAddress ());
}
mm .* = undefined ;
}