add plat_mem_set_exec()
authorGrazvydas Ignotas <notasas@gmail.com>
Thu, 27 Jun 2013 22:41:09 +0000 (01:41 +0300)
committerGrazvydas Ignotas <notasas@gmail.com>
Fri, 28 Jun 2013 00:17:32 +0000 (03:17 +0300)
linux/plat.c
plat.h

index 04ebd12..c34beea 100644 (file)
@@ -200,6 +200,16 @@ void plat_munmap(void *ptr, size_t size)
        }
 }
 
+int plat_mem_set_exec(void *ptr, size_t size)
+{
+       int ret = mprotect(ptr, size, PROT_READ | PROT_WRITE | PROT_EXEC);
+       if (ret != 0)
+               fprintf(stderr, "mprotect(%p, %zd) failed: %d\n",
+                       ptr, size, errno);
+
+       return ret;
+}
+
 /* lprintf */
 void lprintf(const char *fmt, ...)
 {
diff --git a/plat.h b/plat.h
index ab9b3e7..54436cd 100644 (file)
--- a/plat.h
+++ b/plat.h
@@ -102,6 +102,7 @@ void plat_sleep_ms(int ms);
 void *plat_mmap(unsigned long addr, size_t size, int need_exec, int is_fixed);
 void *plat_mremap(void *ptr, size_t oldsize, size_t newsize);
 void  plat_munmap(void *ptr, size_t size);
+int   plat_mem_set_exec(void *ptr, size_t size);
 
 /* timers, to be used for time diff and must refer to the same clock */
 unsigned int plat_get_ticks_ms(void);