Obszar pamięci współdzielonej w NDK
Chcę mieć blok pamięci współdzielonej (anashmem
region), który jest odwzorowany i uzyskany dostęp z kodu natywnego. Chcę również, aby ten blok był używany przez kilka aplikacji. Chcę także, aby działał na poziomie 7 SDK (Android 2.1)
Istnieją dwie trasy. Mogę utworzyć region ashmem w kodzie rodzimym; ale pytanie brzmi - w jaki sposób przekazać deskryptor plików całkowitych do innego procesu? Możesz dowodzićFileDescriptor
obiekty przez aParcel
, ale nie ma sposobu na zbudowanie jednego wokół surowego FD. Jest takżeParcelFileDescriptor
który obsługuje konstruowanie wokół i pobieranie liczb całkowitych FD, ale odpowiednie metody są obsługiwane tylko na poziomie SDK 12 lub nawet wyższym.
Alternatywnie, mogę utworzyćMemoryFile
. Jestfugly sposób przekazać to w paczkach. Ale jak pobrać z niego deskryptor pliku, aby kod natywny miał coś do zrobieniammap()
?