summaryrefslogtreecommitdiffstats
path: root/base/shared_memory_android.cc
diff options
context:
space:
mode:
authormcgrathr@chromium.org <mcgrathr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-01 23:19:31 +0000
committermcgrathr@chromium.org <mcgrathr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-01 23:19:31 +0000
commitb05df6b03e0d5dc552a96578ea6a8a7e47af407c (patch)
tree34a9231715fe019e140160b4046e50d76b6357e2 /base/shared_memory_android.cc
parenta84c55dab98485bb27156a7e99e464ceb9e7f311 (diff)
downloadchromium_src-b05df6b03e0d5dc552a96578ea6a8a7e47af407c.zip
chromium_src-b05df6b03e0d5dc552a96578ea6a8a7e47af407c.tar.gz
chromium_src-b05df6b03e0d5dc552a96578ea6a8a7e47af407c.tar.bz2
Give base::SharedMemory::CreateAnonymous an executable flag
NaCl on Mac and Linux needs to create a shared memory object that it can later make executable with mprotect. Express this need in the interface it uses. Add a test that pages mapped from such an object can later be passed to mprotect with PROT_EXEC. This lays the groundwork for a later change that will sometimes use a different method to allocate an object on Linux when it needs to be executable. On some Linux distributions, shm_open yields objects whose mappings cannot be made executable. BUG= http://code.google.com/p/chromium/issues/detail?id=103377 TEST= SharedMemory.AnonymousExecutable R=mark@chromium.org,jam@chromium.org,amit@chromium.org,ben@chromium.org Review URL: http://codereview.chromium.org/8585002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@112570 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/shared_memory_android.cc')
-rw-r--r--base/shared_memory_android.cc7
1 files changed, 4 insertions, 3 deletions
diff --git a/base/shared_memory_android.cc b/base/shared_memory_android.cc
index 72c3a56..8e55e3a 100644
--- a/base/shared_memory_android.cc
+++ b/base/shared_memory_android.cc
@@ -16,12 +16,13 @@ namespace base {
// all the file descriptors from different processes associated with the region
// are closed, the memory buffer will go away.
-bool SharedMemory::CreateNamed(const std::string& name,
- bool open_existing, uint32 size) {
+bool SharedMemory::Create(const SharedMemoryCreateOptions& options) {
DCHECK_EQ(-1, mapped_file_ );
// "name" is just a label in ashmem. It is visible in /proc/pid/maps.
- mapped_file_ = ashmem_create_region(name.c_str(), size);
+ mapped_file_ = ashmem_create_region(
+ options.name == NULL ? "" : options.name.c_str(),
+ options.size);
if (-1 == mapped_file_) {
DLOG(ERROR) << "Shared memory creation failed";
return false;