diff options
Diffstat (limited to 'rts/ExecPage.c')
-rw-r--r-- | rts/ExecPage.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/rts/ExecPage.c b/rts/ExecPage.c new file mode 100644 index 0000000000..6f5b6e281a --- /dev/null +++ b/rts/ExecPage.c @@ -0,0 +1,24 @@ +/* + * Utilities for managing dynamically-allocated executable pages. + * + * These are primarily used to back the adjustor code produced by the native + * adjustor implementations. + */ + +#include "Rts.h" +#include "LinkerInternals.h" +#include "sm/OSMem.h" + +ExecPage *allocateExecPage() { + ExecPage *page = (ExecPage *) mmapAnonForLinker(getPageSize()); + return page; +} + +void freezeExecPage(ExecPage *page) { + mmapForLinkerMarkExecutable(page, getPageSize()); + flushExec(getPageSize(), page); +} + +void freeExecPage(ExecPage *page) { + munmapForLinker(page, getPageSize(), "freeExecPage"); +} |