Android 基于ASHMEM的SHM替换
我正在使用从*nix到Android的库端口,库使用共享内存或Android 基于ASHMEM的SHM替换,android,unix,shared-memory,ashmem,Android,Unix,Shared Memory,Ashmem,我正在使用从*nix到Android的库端口,库使用共享内存或shm。Android没有System Vshm。相反,它使用ashmem 是否有人知道要将shm调用映射到ashmem的垫片库?谷歌并不是很有帮助。这就是它在处理类似的移植问题时对我的作用: 我没有使用shmfd=open(SHM_PATH,O_RDWR)来创建和获取文件描述符,而是将其替换为 int fd = ashmem_create_region("SharedRegionName", size); 并使用文件描述符获取基
shm
。Android没有System Vshm
。相反,它使用ashmem
是否有人知道要将
shm
调用映射到ashmem
的垫片库?谷歌并不是很有帮助。这就是它在处理类似的移植问题时对我的作用:
我没有使用shmfd=open(SHM_PATH,O_RDWR)来创建和获取文件描述符,而是将其替换为
int fd = ashmem_create_region("SharedRegionName", size);
并使用文件描述符获取基址:
int base_address = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
您可以使用返回描述符的本机函数从本机代码向java代码传递base_地址
Android有一个名为MemoryFile的Ashmem包装类。你也可以看看
以下链接帮助我创建了自己的包装器:
我不得不投下第一个接近票数的一票,因为这显然离题了。。。