Região de memória compartilhada no NDK
Eu quero ter um bloco de memória compartilhada (umashmem
região) mapeada e acessada a partir do código nativo. Eu também quero que este bloco seja usado por vários aplicativos. Eu também quero que ele funcione no nível SDK 7 (Android 2.1)
Existem duas rotas. Eu posso criar uma região ashmem no código nativo; mas então a questão é - como eu passo um descritor de arquivo inteiro para outro processo? Você pode marechalFileDescriptor
objetos através de umParcel
, mas não há como construir um em torno de um FD bruto. Há tambémParcelFileDescriptor
que suporta a construção e recuperação de FDs inteiros, mas os métodos relevantes são suportados apenas no nível 12 do SDK ou até mais.
Como alternativa, posso criar umMemoryFile
. Há ummaneira fugly para passá-lo em parcelas. Mas como eu recupero um descritor de arquivo dele para que o código nativo tenha algo parammap()
?