标签: ashmem

Cutils不包括在NDK中?

我需要使用cutils库和头文件来实现我的NDK项目中的ashmem,但是在我的系统中找不到与cutils相关的任何东西.它位于何处或从何处可以获得它?

android-ndk ashmem

7
推荐指数
2
解决办法
6154
查看次数

dalvik-LinearAlloc,dalvik-aux-structure,dalvik-bitmap-1,dalvik-bitmap-2,dalvik-card-table,dalvik-mark-stack和dalvik-zygote中的数据是什么?

我在PID上使用showmap命令,我无法理解报告中的这一部分:

 16384     3752      689        0     3132        0      620    4 /dev/ashmem/dalvik-LinearAlloc (deleted)
  2460     1748      934        0      828        0      920   18 /dev/ashmem/dalvik-aux-structure (deleted)
  8192      572      572        0        0        0      572    1 /dev/ashmem/dalvik-bitmap-1 (deleted)
  8192        0        0        0        0        0        0    1 /dev/ashmem/dalvik-bitmap-2 (deleted)
  4100      312      312        0        0        0      312    1 /dev/ashmem/dalvik-card-table (deleted)
502140    14860    14860        0        0        0    14860    3 /dev/ashmem/dalvik-heap (deleted)
  1500      280      280        0        0        0      280    1 /dev/ashmem/dalvik-jit-code-cache (deleted)
174764        0        0        0        0        0        0    1 /dev/ashmem/dalvik-mark-stack …
Run Code Online (Sandbox Code Playgroud)

android dalvik ashmem

6
推荐指数
1
解决办法
2282
查看次数

写给ashmem /为什么android免费ashmem?

我想在两个(ndk-)进程之间共享数据.为此,我使用ashmem使用此来源.
一个过程是连续read(read_mem),一个过程是写一次(write_mem).

问题是读取过程没有获得编写器的值.

通过观察阅读器的地图,我发现android会立即删除共享内存文件ashmem_create_region.


read_mem.c

// read_mem.c
#include <stdio.h>
#include <errno.h>
#include <sys/mman.h>
#include "ashmem.h"

#define SHM_NAME "test_mem"
int main(int argc, char **argv) {
    int shID = ashmem_create_region(SHM_NAME, 2);
    if (shID < 0)
    {
        perror("ashmem_create_region failed\n");
        return 1;
    }
    // right here /dev/ashmem/test_mem is deleted
    printf("ashmem_create_region: %d\n", shID);
    char *sh_buffer = (char*)mmap(NULL, 2, PROT_READ | PROT_WRITE, MAP_SHARED, shID, 0);
    if (sh_buffer == (char*)-1)
    {
        perror("mmap failed");
        return 1;
    }
    printf("PID=%d", getpid()); …
Run Code Online (Sandbox Code Playgroud)

android shared-memory android-ndk ashmem

6
推荐指数
1
解决办法
8316
查看次数

Android 内容提供程序在提供程序崩溃时的稳健性

在 Android 平台上(已在 ICS 上确认),如果客户端在查询过程中(即具有打开的游标)内容提供者死亡,则框架会决定终止持有打开游标的客户端进程。

这是当我使用下载管理器查询尝试此操作时的 logcat 输出,该查询在执行查询后会休眠。“睡眠”是为了重现问题。您可以想象当提供者在正确/错误的时间死亡时,它会发生在常规用例中。然后杀死 com.android.media(托管 downloadProvider)。

“杀死 com.example (pid 12234),因为提供程序 com.android.providers.downloads.DownloadProvider 正处于死亡进程 android.process.media”

我在 ActivityManagerService::removeDyingProviderLocked 中跟踪了此代码

 10203     private final void removeDyingProviderLocked(ProcessRecord proc,
 10204             ContentProviderRecord cpr) {
 10205         synchronized (cpr) {
 10206             cpr.launchingApp = null;
 10207             cpr.notifyAll();
 10208         }
 10210         mProvidersByClass.remove(cpr.name);
 10211         String names[] = cpr.info.authority.split(";");
 10212         for (int j = 0; j < names.length; j++) {
 10213             mProvidersByName.remove(names[j]);
 10214         }
 10215 
 10216         Iterator<ProcessRecord> cit = cpr.clients.iterator();
 10217         while (cit.hasNext()) {
 10218             ProcessRecord capp = cit.next();
 10219 …
Run Code Online (Sandbox Code Playgroud)

android robustness android-contentprovider ashmem

5
推荐指数
1
解决办法
1694
查看次数