Skip to content

std.ptr

pointer <-> address and alignment math (Fels has no pointer arithmetic)

pub to_addr :: fn($T: type, p: *T) -> usize

address of p

pub from_addr :: fn($T: type, addr: usize) -> *T

address -> *T; unsafe: caller ensures it is valid and aligned for T

pub is_null :: fn($T: type, p: *T) -> bool
pub add_bytes :: fn(addr: usize, offset: usize) -> usize

addr + offset bytes

pub sub_bytes :: fn(addr: usize, offset: usize) -> usize

addr - offset bytes

pub diff_bytes :: fn($T: type, a: *T, b: *T) -> isize

a - b in bytes; negative when a comes first

pub is_aligned :: fn(addr: usize, alignment: usize) -> bool
pub align_down :: fn(addr: usize, alignment: usize) -> usize
pub align_up :: fn(addr: usize, alignment: usize) -> usize