Statically verify that addresses are page-aligned
A bit of an experiment, because I'm not really happy with fmap/funmap's rounding because it's not obvious what is already page-aligned and what isn't.
This data type will only ever hold page-aligned numbers (numbers that are divisible by
PAGE_SIZE
). The runtime check/rounding is executed once, and after that the type-checker takes over to ensure we only perform safe actions.This type offers a way to add/subtract multiples while retaining the page-aligned type, since
kx + ky = kz
. More safe operations should be implemented, as needed.The goal for this type is to slowly consume more parts of Redox OS' memory logic, eventually making it easy to verify with a simple glance that code is correct.