第7讲 cameraserver进程启动流程概述 -凯发k8手机登录

本讲是android camera native framework专题的第7讲,我们介绍cameraserver进程启动流程概述。

更多资源:

资源 描述
在线课程
知识星球 星球名称:深入浅出android camera
星球id: 17296815
wechat 极客笔记圈

sigpipe信号

在tcp通信中,当通信的双方中的一方close一个连接时,若另一方接着发数据,根据tcp协议的规定,会收到一个rst响应报文,若再往这个服务器发送数据时,系统会发出一个sigpipe信号给进程,告诉进程这个连接已经断开了,不能再写入数据。

该信号的缺省行为是终止进程,因此进程必须捕获它以免不情愿的被终止。

若不想退出可以把 sigpipe设为sig_ign。

配置5个线程来处理hidl调用

执行:

ps -t -p 11657

输出:

配置5个线程来处理hidl调用

注册media.camera服务

注册media.camera服务

onfirstref流程

new cameraservice后赋值给sp指针:

onfirstref流程

因此,调用完cameraservice构造函数后,会继续调用cameraservice::onfirstref。

onfirstref会完成7件事情:

void cameraservice::onfirstref()
{
    alogi("cameraservice process starting");
    bncameraservice::onfirstref();
    // update battery life tracking if service is restarting
    batterynotifier& notifier(batterynotifier::getinstance());
    notifier.noteresetcamera();
    notifier.noteresetflashlight();
    status_t res = invalid_operation;
    res = enumerateproviders();
    if (res == ok) {
        minitialized = true;
    }
    muidpolicy = new uidpolicy(this);
    muidpolicy->registerself();
    msensorprivacypolicy = new sensorprivacypolicy(this);
    msensorprivacypolicy->registerself();
    minjectionstatuslistener = new injectionstatuslistener(this);
    mappops.setcameraaudiorestriction(maudiorestriction);
    sp hcs = hidlcameraservice::getinstance(this);
    if (hcs->registerasservice() != android::ok) {
        aloge("%s: failed to register default android.frameworks.cameraservice.service@1.0",
              __function__);
    }
    // this needs to be last call in this function, so that it's as close to
    // servicemanager::addservice() as possible.
    cameraserviceproxywrapper::pingcameraserviceproxy();
    alogi("cameraservice pinged cameraservice proxy");
}

流程如下:

onfirstref流程

camera课程

python教程

java教程

web教程

数据库教程

图形图像教程

办公软件教程

linux教程

计算机教程

大数据教程

开发工具教程

网站地图