summaryrefslogtreecommitdiffstats
path: root/libpixelflinger/codeflinger/CodeCache.h
diff options
context:
space:
mode:
authorNick Kralevich <nnk@google.com>2010-05-06 15:05:52 -0700
committerNick Kralevich <nnk@google.com>2010-05-07 16:35:52 -0700
commitbeeeee705bcf16d705748713ea40dca3486cc7b7 (patch)
tree028ac0bfc7ec987b2c2747cde9d02dc7f4b3b626 /libpixelflinger/codeflinger/CodeCache.h
parent4e226a5006a5c64385b6c88a36c6a4044bd6ffdd (diff)
downloadsystem_core-beeeee705bcf16d705748713ea40dca3486cc7b7.zip
system_core-beeeee705bcf16d705748713ea40dca3486cc7b7.tar.gz
system_core-beeeee705bcf16d705748713ea40dca3486cc7b7.tar.bz2
Allow pixelflinger to work when NX (No Execute) is enabled.
Instead of allocating memory from the (non executable) heap, allocate memory using mspace and ensure that we use mprotect to mark it as PROT_EXEC. This allows pixelflinger to continue to work even when NX protections are enabled. Testing: Using the ApiDemos market app, verify that Apidemos -> Graphics -> OpenGL ES -> GLSurfaceView works when "adb shell setprop debug.egl.hw 0" is set. Change-Id: Ib569cd2543c6fa25688ee76325a712bc2347450b
Diffstat (limited to 'libpixelflinger/codeflinger/CodeCache.h')
-rw-r--r--libpixelflinger/codeflinger/CodeCache.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/libpixelflinger/codeflinger/CodeCache.h b/libpixelflinger/codeflinger/CodeCache.h
index 8ff1366..aaafd26 100644
--- a/libpixelflinger/codeflinger/CodeCache.h
+++ b/libpixelflinger/codeflinger/CodeCache.h
@@ -22,6 +22,7 @@
#include <stdint.h>
#include <pthread.h>
#include <sys/types.h>
+#include <cutils/mspace.h>
#include "tinyutils/KeyedVector.h"
#include "tinyutils/smartpointer.h"
@@ -67,9 +68,12 @@ public:
typedef void weakref_type;
private:
+ static mspace getMspace();
+ void ensureMbaseExecutable();
+
mutable int32_t mCount;
uint32_t* mBase;
- ssize_t mSize;
+ size_t mSize;
};
// ----------------------------------------------------------------------------