summaryrefslogtreecommitdiffstats
path: root/include/utils/MemoryHeapPmem.h
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2008-12-17 18:05:43 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2008-12-17 18:05:43 -0800
commitf013e1afd1e68af5e3b868c26a653bbfb39538f8 (patch)
tree7ad6c8fd9c7b55f4b4017171dec1cb760bbd26bf /include/utils/MemoryHeapPmem.h
parente70cfafe580c6f2994c4827cd8a534aabf3eb05c (diff)
downloadframeworks_base-f013e1afd1e68af5e3b868c26a653bbfb39538f8.zip
frameworks_base-f013e1afd1e68af5e3b868c26a653bbfb39538f8.tar.gz
frameworks_base-f013e1afd1e68af5e3b868c26a653bbfb39538f8.tar.bz2
Code drop from //branches/cupcake/...@124589
Diffstat (limited to 'include/utils/MemoryHeapPmem.h')
-rw-r--r--include/utils/MemoryHeapPmem.h25
1 files changed, 20 insertions, 5 deletions
diff --git a/include/utils/MemoryHeapPmem.h b/include/utils/MemoryHeapPmem.h
index b694b20..60335ad 100644
--- a/include/utils/MemoryHeapPmem.h
+++ b/include/utils/MemoryHeapPmem.h
@@ -23,7 +23,7 @@
#include <utils/MemoryDealer.h>
#include <utils/MemoryHeapBase.h>
#include <utils/IMemory.h>
-#include <utils/Vector.h>
+#include <utils/SortedVector.h>
namespace android {
@@ -31,11 +31,21 @@ class MemoryHeapBase;
// ---------------------------------------------------------------------------
-class SubRegionMemory;
-
class MemoryHeapPmem : public HeapInterface, public MemoryHeapBase
{
public:
+ class MemoryPmem : public BnMemory {
+ public:
+ MemoryPmem(const sp<MemoryHeapPmem>& heap);
+ ~MemoryPmem();
+ protected:
+ const sp<MemoryHeapPmem>& getHeap() const { return mClientHeap; }
+ private:
+ friend class MemoryHeapPmem;
+ virtual void revoke() = 0;
+ sp<MemoryHeapPmem> mClientHeap;
+ };
+
MemoryHeapPmem(const sp<MemoryHeapBase>& pmemHeap,
uint32_t flags = IMemoryHeap::MAP_ONCE);
~MemoryHeapPmem();
@@ -51,11 +61,16 @@ public:
/* revoke all allocations made by this heap */
virtual void revoke();
-
+
+private:
+ /* use this to create your own IMemory for mapMemory */
+ virtual sp<MemoryPmem> createMemory(size_t offset, size_t size);
+ void remove(const wp<MemoryPmem>& memory);
+
private:
sp<MemoryHeapBase> mParentHeap;
mutable Mutex mLock;
- Vector< wp<SubRegionMemory> > mAllocations;
+ SortedVector< wp<MemoryPmem> > mAllocations;
};