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 › fileMemoryMapDestroy Private Function fileMemoryMapDestroy Doc Source Private Function std.Io.Threaded.fileMemoryMapDestroy
fn fileMemoryMapDestroy (userdata : ?*anyopaque , mm : *File .MemoryMap ) void Params userdata : ?*anyopaque mm : *File .MemoryMap File Io/Threaded.zig: 18560
18560
18561
18562
18563
18564
18565
18566
18567
18568
18569
18570
18571
18572
18573
18574
18575
18576
18577
18578
18579
18580
18581
18582
18583
18584
18585 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 ;
}