NaCl runtime fixes
[mono.git] / mono / utils / mono-mmap.c
index 412a23b3fff33713e20a6b18489384fc19d1a32b..087259fd15129cebee0d23876a50a24404706d2b 100644 (file)
@@ -405,6 +405,20 @@ mono_file_unmap (void *addr, void *handle)
  *
  * Returns: 0 on success.
  */
+#if defined(__native_client__)
+int
+mono_mprotect (void *addr, size_t length, int flags)
+{
+       int prot = prot_from_flags (flags);
+       void *new_addr;
+
+       if (flags & MONO_MMAP_DISCARD) memset (addr, 0, length);
+
+       new_addr = mmap(addr, length, prot, MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS, -1, 0);
+       if (new_addr == addr) return 0;
+        return -1;
+}
+#else
 int
 mono_mprotect (void *addr, size_t length, int flags)
 {
@@ -427,6 +441,7 @@ mono_mprotect (void *addr, size_t length, int flags)
        }
        return mprotect (addr, length, prot);
 }
+#endif // __native_client__
 
 #else