31 lines
617 B
C++
31 lines
617 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;
|
|
|
|
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;
|
|
}
|
|
|
|
void set_border_locked(bool locked);
|
|
};
|
|
|
|
}
|