factor/vm/segments.hpp

36 lines
574 B
C++

namespace factor
{
inline cell align_page(cell a)
{
return align(a,getpagesize());
}
/* segments set up guard pages to check for under/overflow.
size must be a multiple of the page size */
struct segment {
cell start;
cell size;
cell end;
explicit segment(cell size, bool executable_p);
~segment();
bool underflow_p(cell addr)
{
return (addr >= start - getpagesize() && addr < start);
}
bool overflow_p(cell addr)
{
return (addr >= end && addr < end + getpagesize());
}
bool in_segment_p(cell addr)
{
return (addr >= start && addr < end);
}
};
}