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

Side by Side 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: Addressed CR comments Created 7 years, 8 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 unified diff | Download patch
« no previous file with comments | « sysdeps/nacl/irt_syscalls.h ('k') | sysdeps/nacl/mprotect.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #include <string.h> 1 #include <string.h>
2 #include <sys/stat.h> 2 #include <sys/stat.h>
3 #include <time.h> 3 #include <time.h>
4 #include <nacl_stat.h> 4 #include <nacl_stat.h>
5 #include <nacl_syscalls.h> 5 #include <nacl_syscalls.h>
6 #define stat nacl_abi_stat 6 #define stat nacl_abi_stat
7 #include <irt.h> 7 #include <irt.h>
8 #undef stat 8 #undef stat
9 #include <irt_syscalls.h> 9 #include <irt_syscalls.h>
10 #ifdef IS_IN_rtld 10 #ifdef IS_IN_rtld
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 if ((uint32_t) rv > 0xffff0000u) 138 if ((uint32_t) rv > 0xffff0000u)
139 return -(int32_t) rv; 139 return -(int32_t) rv;
140 *addr = (void *) (uintptr_t) rv; 140 *addr = (void *) (uintptr_t) rv;
141 return 0; 141 return 0;
142 } 142 }
143 143
144 static int nacl_irt_munmap (void *addr, size_t len) { 144 static int nacl_irt_munmap (void *addr, size_t len) {
145 return -NACL_SYSCALL (munmap) (addr, len); 145 return -NACL_SYSCALL (munmap) (addr, len);
146 } 146 }
147 147
148 static int nacl_irt_mprotect (void *addr, size_t len, int prot) {
149 return -NACL_SYSCALL (mprotect) (addr, len, prot);
150 }
151
148 static int nacl_irt_dyncode_create(void *dest, const void *src, size_t size) { 152 static int nacl_irt_dyncode_create(void *dest, const void *src, size_t size) {
149 return -NACL_SYSCALL(dyncode_create)(dest, src, size); 153 return -NACL_SYSCALL(dyncode_create)(dest, src, size);
150 } 154 }
151 155
152 static int nacl_irt_dyncode_modify(void *dest, const void *src, size_t size) { 156 static int nacl_irt_dyncode_modify(void *dest, const void *src, size_t size) {
153 return -NACL_SYSCALL(dyncode_modify)(dest, src, size); 157 return -NACL_SYSCALL(dyncode_modify)(dest, src, size);
154 } 158 }
155 159
156 static int nacl_irt_dyncode_delete(void *dest, size_t size) { 160 static int nacl_irt_dyncode_delete(void *dest, size_t size) {
157 return -NACL_SYSCALL(dyncode_delete)(dest, size); 161 return -NACL_SYSCALL(dyncode_delete)(dest, size);
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 int (*__nacl_irt_setsockopt) (int sockfd, int level, int optname, 357 int (*__nacl_irt_setsockopt) (int sockfd, int level, int optname,
354 const void *optval, socklen_t optlen); 358 const void *optval, socklen_t optlen);
355 int (*__nacl_irt_socketpair) (int domain, int type, int protocol, int sv[2]); 359 int (*__nacl_irt_socketpair) (int domain, int type, int protocol, int sv[2]);
356 int (*__nacl_irt_shutdown) (int sockfd, int how); 360 int (*__nacl_irt_shutdown) (int sockfd, int how);
357 361
358 362
359 int (*__nacl_irt_sysbrk) (void **newbrk); 363 int (*__nacl_irt_sysbrk) (void **newbrk);
360 int (*__nacl_irt_mmap) (void **addr, size_t len, int prot, int flags, 364 int (*__nacl_irt_mmap) (void **addr, size_t len, int prot, int flags,
361 int fd, off_t off); 365 int fd, off_t off);
362 int (*__nacl_irt_munmap) (void *addr, size_t len); 366 int (*__nacl_irt_munmap) (void *addr, size_t len);
367 int (*__nacl_irt_mprotect) (void *addr, size_t len, int prot);
363 368
364 int (*__nacl_irt_dyncode_create) (void *dest, const void *src, size_t size); 369 int (*__nacl_irt_dyncode_create) (void *dest, const void *src, size_t size);
365 int (*__nacl_irt_dyncode_modify) (void *dest, const void *src, size_t size); 370 int (*__nacl_irt_dyncode_modify) (void *dest, const void *src, size_t size);
366 int (*__nacl_irt_dyncode_delete) (void *dest, size_t size); 371 int (*__nacl_irt_dyncode_delete) (void *dest, size_t size);
367 372
368 int (*__nacl_irt_thread_create) (void *start_user_address, void *stack, 373 int (*__nacl_irt_thread_create) (void *start_user_address, void *stack,
369 void *thread_ptr); 374 void *thread_ptr);
370 void (*__nacl_irt_thread_exit) (int32_t *stack_flag); 375 void (*__nacl_irt_thread_exit) (int32_t *stack_flag);
371 int (*__nacl_irt_thread_nice) (const int nice); 376 int (*__nacl_irt_thread_nice) (const int nice);
372 377
(...skipping 19 matching lines...) Expand all
392 int (*__nacl_irt_clock_getres) (clockid_t clk_id, struct timespec *res); 397 int (*__nacl_irt_clock_getres) (clockid_t clk_id, struct timespec *res);
393 int (*__nacl_irt_clock_gettime) (clockid_t clk_id, struct timespec *tp); 398 int (*__nacl_irt_clock_gettime) (clockid_t clk_id, struct timespec *tp);
394 399
395 void 400 void
396 init_irt_table (void) 401 init_irt_table (void)
397 { 402 {
398 union { 403 union {
399 struct nacl_irt_basic nacl_irt_basic; 404 struct nacl_irt_basic nacl_irt_basic;
400 struct nacl_irt_fdio nacl_irt_fdio; 405 struct nacl_irt_fdio nacl_irt_fdio;
401 struct nacl_irt_filename nacl_irt_filename; 406 struct nacl_irt_filename nacl_irt_filename;
402 struct nacl_irt_memory nacl_irt_memory; 407 struct nacl_irt_memory_v0_2 nacl_irt_memory;
403 struct nacl_irt_dyncode nacl_irt_dyncode; 408 struct nacl_irt_dyncode nacl_irt_dyncode;
404 struct nacl_irt_thread nacl_irt_thread; 409 struct nacl_irt_thread nacl_irt_thread;
405 struct nacl_irt_mutex nacl_irt_mutex; 410 struct nacl_irt_mutex nacl_irt_mutex;
406 struct nacl_irt_cond nacl_irt_cond; 411 struct nacl_irt_cond nacl_irt_cond;
407 struct nacl_irt_tls nacl_irt_tls; 412 struct nacl_irt_tls nacl_irt_tls;
408 struct nacl_irt_resource_open nacl_irt_resource_open; 413 struct nacl_irt_resource_open nacl_irt_resource_open;
409 struct nacl_irt_clock nacl_irt_clock; 414 struct nacl_irt_clock nacl_irt_clock;
410 } u; 415 } u;
411 416
412 if (__nacl_irt_query && 417 if (__nacl_irt_query &&
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 __nacl_irt_open = u.nacl_irt_filename.open; 467 __nacl_irt_open = u.nacl_irt_filename.open;
463 __nacl_irt_stat = u.nacl_irt_filename.nacl_abi_stat; 468 __nacl_irt_stat = u.nacl_irt_filename.nacl_abi_stat;
464 } 469 }
465 else 470 else
466 { 471 {
467 __nacl_irt_open = nacl_irt_open; 472 __nacl_irt_open = nacl_irt_open;
468 __nacl_irt_stat = nacl_irt_stat; 473 __nacl_irt_stat = nacl_irt_stat;
469 } 474 }
470 475
471 if (__nacl_irt_query && 476 if (__nacl_irt_query &&
472 __nacl_irt_query (NACL_IRT_MEMORY_v0_1, &u.nacl_irt_memory, 477 __nacl_irt_query (NACL_IRT_MEMORY_v0_2, &u.nacl_irt_memory,
473 sizeof(u.nacl_irt_memory)) == sizeof(u.nacl_irt_memory)) 478 sizeof(u.nacl_irt_memory)) == sizeof(u.nacl_irt_memory))
474 { 479 {
475 __nacl_irt_sysbrk = u.nacl_irt_memory.sysbrk; 480 __nacl_irt_sysbrk = u.nacl_irt_memory.sysbrk;
476 __nacl_irt_mmap = u.nacl_irt_memory.mmap; 481 __nacl_irt_mmap = u.nacl_irt_memory.mmap;
477 __nacl_irt_munmap = u.nacl_irt_memory.munmap; 482 __nacl_irt_munmap = u.nacl_irt_memory.munmap;
483 __nacl_irt_mprotect = u.nacl_irt_memory.mprotect;
484 }
485 else if (__nacl_irt_query &&
486 __nacl_irt_query (NACL_IRT_MEMORY_v0_1, &u.nacl_irt_memory,
487 sizeof(struct nacl_irt_memory_v0_1)) ==
488 sizeof(struct nacl_irt_memory_v0_1))
489 {
490 __nacl_irt_sysbrk = u.nacl_irt_memory.sysbrk;
491 __nacl_irt_mmap = u.nacl_irt_memory.mmap;
492 __nacl_irt_munmap = u.nacl_irt_memory.munmap;
493 __nacl_irt_mprotect = not_implemented;
478 } 494 }
479 else 495 else
480 { 496 {
481 __nacl_irt_sysbrk = nacl_irt_sysbrk; 497 __nacl_irt_sysbrk = nacl_irt_sysbrk;
482 __nacl_irt_mmap = nacl_irt_mmap; 498 __nacl_irt_mmap = nacl_irt_mmap;
483 __nacl_irt_munmap = nacl_irt_munmap; 499 __nacl_irt_munmap = nacl_irt_munmap;
500 __nacl_irt_mprotect = nacl_irt_mprotect;
484 } 501 }
485 502
486 if (__nacl_irt_query && 503 if (__nacl_irt_query &&
487 __nacl_irt_query (NACL_IRT_DYNCODE_v0_1, &u.nacl_irt_dyncode, 504 __nacl_irt_query (NACL_IRT_DYNCODE_v0_1, &u.nacl_irt_dyncode,
488 sizeof(u.nacl_irt_dyncode)) == sizeof(u.nacl_irt_dyncode)) 505 sizeof(u.nacl_irt_dyncode)) == sizeof(u.nacl_irt_dyncode))
489 { 506 {
490 __nacl_irt_dyncode_create = u.nacl_irt_dyncode.dyncode_create; 507 __nacl_irt_dyncode_create = u.nacl_irt_dyncode.dyncode_create;
491 __nacl_irt_dyncode_modify = u.nacl_irt_dyncode.dyncode_modify; 508 __nacl_irt_dyncode_modify = u.nacl_irt_dyncode.dyncode_modify;
492 __nacl_irt_dyncode_delete = u.nacl_irt_dyncode.dyncode_delete; 509 __nacl_irt_dyncode_delete = u.nacl_irt_dyncode.dyncode_delete;
493 } 510 }
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
635 __nacl_irt_getsockopt = not_implemented; 652 __nacl_irt_getsockopt = not_implemented;
636 __nacl_irt_setsockopt = not_implemented; 653 __nacl_irt_setsockopt = not_implemented;
637 __nacl_irt_socketpair = not_implemented; 654 __nacl_irt_socketpair = not_implemented;
638 __nacl_irt_shutdown = not_implemented; 655 __nacl_irt_shutdown = not_implemented;
639 } 656 }
640 657
641 size_t nacl_interface_query(const char *interface_ident, 658 size_t nacl_interface_query(const char *interface_ident,
642 void *table, size_t tablesize) { 659 void *table, size_t tablesize) {
643 return (*__nacl_irt_query)(interface_ident, table, tablesize); 660 return (*__nacl_irt_query)(interface_ident, table, tablesize);
644 } 661 }
OLDNEW
« no previous file with comments | « 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