Function mremap [src]

Prototype

pub fn mremap( old_address: ?[*]align(page_size_min) u8, old_len: usize, new_len: usize, flags: system.MREMAP, new_address: ?[*]align(page_size_min) u8, ) MRemapError![]align(page_size_min) u8

Parameters

old_address: ?[*]align(page_size_min) u8old_len: usizenew_len: usizeflags: system.MREMAPnew_address: ?[*]align(page_size_min) u8

Possible Errors

InvalidSyscallParameters

Either a bug in the calling code, or the operating system abused the EINVAL error code.

LockedMemoryLimitExceeded
OutOfMemory
Unexpected UnexpectedError

The Operating System returned an undocumented error code.

This error is in theory not possible, but it would be better to handle this error than to invoke undefined behavior.

When this error code is observed, it usually means the Zig Standard Library needs a small patch to add the error code to the error set for the respective function.

Source

pub fn mremap( old_address: ?[*]align(page_size_min) u8, old_len: usize, new_len: usize, flags: system.MREMAP, new_address: ?[*]align(page_size_min) u8, ) MRemapError![]align(page_size_min) u8 { const rc = system.mremap(old_address, old_len, new_len, flags, new_address); const err: E = if (builtin.link_libc) blk: { if (rc != std.c.MAP_FAILED) return @as([*]align(page_size_min) u8, @ptrCast(@alignCast(rc)))[0..new_len]; break :blk @enumFromInt(system._errno().*); } else blk: { const err = errno(rc); if (err == .SUCCESS) return @as([*]align(page_size_min) u8, @ptrFromInt(rc))[0..new_len]; break :blk err; }; switch (err) { .SUCCESS => unreachable, .AGAIN => return error.LockedMemoryLimitExceeded, .INVAL => return error.InvalidSyscallParameters, .NOMEM => return error.OutOfMemory, .FAULT => unreachable, else => return unexpectedErrno(err), } }