Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Unified Diff: sysdeps/nacl/irt_syscalls.c

Issue 12382030: Provide mprotect syscall (Closed) Base URL: http://git.chromium.org/native_client/nacl-glibc.git@master
Patch Set: Remove addr const modifier from mprotect Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sysdeps/nacl/irt_syscalls.c
diff --git a/sysdeps/nacl/irt_syscalls.c b/sysdeps/nacl/irt_syscalls.c
index 14862fe333435d91dcba5ab87589f74d024dd27c..d4b5cd73501c517fbc5aa3dd2efcb37fc8b0f15d 100644
--- a/sysdeps/nacl/irt_syscalls.c
+++ b/sysdeps/nacl/irt_syscalls.c
@@ -269,6 +269,10 @@ static int nacl_irt_clock_gettime(clockid_t clk_id,
return -NACL_SYSCALL (clock_gettime) (clk_id, tp);
}
+static int nacl_irt_mprotect (void *addr, size_t len, int prot) {
Mark Seaborn 2013/03/29 15:48:07 Nit: put this after munmap()
Petr Hosek 2013/03/29 21:02:21 Moved.
+ return -NACL_SYSCALL (mprotect) (addr, len, prot);
+}
+
static size_t no_interface (const char *interface_ident,
void *table, size_t tablesize) {
return 0;
@@ -392,6 +396,8 @@ int (*__nacl_irt_open_resource) (const char* file, int *fd);
int (*__nacl_irt_clock_getres) (clockid_t clk_id, struct timespec *res);
int (*__nacl_irt_clock_gettime) (clockid_t clk_id, struct timespec *tp);
+int (*__nacl_irt_mprotect) (void *addr, size_t len, int prot);
Mark Seaborn 2013/03/29 15:48:07 Put this after munmap() too
Petr Hosek 2013/03/29 21:02:21 Moved.
+
void
init_irt_table (void)
{
@@ -399,7 +405,7 @@ init_irt_table (void)
struct nacl_irt_basic nacl_irt_basic;
struct nacl_irt_fdio nacl_irt_fdio;
struct nacl_irt_filename nacl_irt_filename;
- struct nacl_irt_memory nacl_irt_memory;
+ struct nacl_irt_memory_v0_2 nacl_irt_memory;
struct nacl_irt_dyncode nacl_irt_dyncode;
struct nacl_irt_thread nacl_irt_thread;
struct nacl_irt_mutex nacl_irt_mutex;
@@ -469,18 +475,30 @@ init_irt_table (void)
}
if (__nacl_irt_query &&
- __nacl_irt_query (NACL_IRT_MEMORY_v0_1, &u.nacl_irt_memory,
+ __nacl_irt_query (NACL_IRT_MEMORY_v0_2, &u.nacl_irt_memory,
sizeof(u.nacl_irt_memory)) == sizeof(u.nacl_irt_memory))
{
__nacl_irt_sysbrk = u.nacl_irt_memory.sysbrk;
__nacl_irt_mmap = u.nacl_irt_memory.mmap;
__nacl_irt_munmap = u.nacl_irt_memory.munmap;
+ __nacl_irt_mprotect = u.nacl_irt_memory.mprotect;
+ }
+ else if (__nacl_irt_query &&
+ __nacl_irt_query (NACL_IRT_MEMORY_v0_1, &u.nacl_irt_memory,
+ sizeof(struct nacl_irt_memory_v0_1)) ==
+ sizeof(struct nacl_irt_memory_v0_1))
+ {
+ __nacl_irt_sysbrk = u.nacl_irt_memory.sysbrk;
+ __nacl_irt_mmap = u.nacl_irt_memory.mmap;
+ __nacl_irt_munmap = u.nacl_irt_memory.munmap;
+ __nacl_irt_mprotect = nacl_irt_mprotect;
Mark Seaborn 2013/03/29 15:48:07 You shouldn't fall back to using the syscall direc
Petr Hosek 2013/03/29 21:02:21 Fixed.
}
else
{
__nacl_irt_sysbrk = nacl_irt_sysbrk;
__nacl_irt_mmap = nacl_irt_mmap;
__nacl_irt_munmap = nacl_irt_munmap;
+ __nacl_irt_mprotect = nacl_irt_mprotect;
}
if (__nacl_irt_query &&
« sysdeps/nacl/irt.h ('K') | « sysdeps/nacl/irt_syscalls.h ('k') | sysdeps/nacl/mprotect.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698