|
- #ifndef ANDROIDSHM
- #define ANDROIDSHM
-
- #include <binder/Parcel.h>
- #include "BnAndroidShm.h"
- #include <utils/Log.h>
- #include <binder/MemoryHeapBase.h>
- #include "shm.h"
- #include "android/Shm.h" //android extension of shm.h
-
- namespace android {
-
- class AndroidShm : public BnAndroidShm
- {
- #define MAX_SHARED_MEMORY_COUNT 257
- private:
- int MemAlloc(unsigned int size);
-
- public:
- virtual ~AndroidShm();
- static int instantiate();
- virtual int sendCommand(const char* command);
- virtual int allocShm(const int size); // if negative return value is error
- virtual int removeShm(const unsigned int index); // shared memory Á¦°Å
- virtual int isAllocated(const unsigned int index); // allocated ¿©ºÎ È®ÀÎ
- virtual int setRegistryIndex(const unsigned int index);
- virtual int getRegistryIndex();
- virtual sp<IMemoryHeap> InitSemaphore(const char* name);
- virtual sp<IMemoryHeap> getBuffer(int index);
- //virtual status_t onTransact(
- // uint32_t code,
- // const Parcel& data,
- // Parcel* reply,
- // uint32_t flags);
- private:
- int testGetBuffer();
- int testGetBufferByNewProcess();
- AndroidShm();
-
- sp<MemoryHeapBase> mMemHeap[MAX_SHARED_MEMORY_COUNT];
- unsigned int mRegistryIndex;
-
- // for named semaphore simulation
- #define MAX_SEMAPHORE_MEMORY_COUNT 300
- #define MAX_SEMAPHORE_NAME_LENGTH 300
- sp<MemoryHeapBase> mSemaphore[MAX_SEMAPHORE_MEMORY_COUNT];
- char mSemaphoreName[MAX_SEMAPHORE_MEMORY_COUNT][MAX_SEMAPHORE_NAME_LENGTH];
- };
- };
-
- #endif
|