4688 // Map a block of memory. |
4688 // Map a block of memory. |
4689 char* os::map_memory(int fd, const char* file_name, size_t file_offset, |
4689 char* os::map_memory(int fd, const char* file_name, size_t file_offset, |
4690 char *addr, size_t bytes, bool read_only, |
4690 char *addr, size_t bytes, bool read_only, |
4691 bool allow_exec) { |
4691 bool allow_exec) { |
4692 int prot; |
4692 int prot; |
4693 int flags; |
4693 int flags = MAP_PRIVATE; |
4694 |
4694 |
4695 if (read_only) { |
4695 if (read_only) { |
4696 prot = PROT_READ; |
4696 prot = PROT_READ; |
4697 flags = MAP_SHARED; |
|
4698 } else { |
4697 } else { |
4699 prot = PROT_READ | PROT_WRITE; |
4698 prot = PROT_READ | PROT_WRITE; |
4700 flags = MAP_PRIVATE; |
|
4701 } |
4699 } |
4702 |
4700 |
4703 if (allow_exec) { |
4701 if (allow_exec) { |
4704 prot |= PROT_EXEC; |
4702 prot |= PROT_EXEC; |
4705 } |
4703 } |