Android Camera(一) Provider启动流程 (androidP)(HIDL)

本文详细解析了Android系统中CameraProvider服务的启动流程,包括通过rc文件启动、binder线程池配置、HIDL接口调用和服务注册过程。

本章开始分析camera框架 主要是自己用来加深理解的 内含HIDL的调用流程

camera provider 启动


android.hardware.camera.provider@2.4-service.rc

路径  hardware/interfaces/camera/provider/2.4/default/android.hardware.camera.provider@2.4-service.rc

跟普通服务类似就是以一个rc文件启动的,在之前的文章中我们分析过rc文件是如何启动服务的

android8.1系统启动过程(四) 解析init.rc_we1less的博客-优快云博客

service camera-provider-2-4 /vendor/bin/hw/android.hardware.camera.provider@2.4-service
    class hal
    user cameraserver
    group audio camera input drmrpc
    ioprio rt 4
    capabilities SYS_NICE
    writepid /dev/cpuset/camera-daemon/tasks /dev/stune/top-app/tasks

在android启动的过程中,init进程调用该脚本启动 camera provider 服务。根据该目录下的 Android.bp 可以知道,其实就是运行该目录下 service.cpp 编译的可执行文件 


main

路径  hardware/interfaces/camera/provider/2.4/default/service.cpp

        驱动可通过vndbinder与其他HAL模块通信,默认创建直通式的camera provider 服务,在Treble架构下,存在了3个binder设备,分别是/dev/binder、/dev/vndbinder、/dev/hwbinder,上层需要通过binder库来访问这些binder设备,而/dev/binder和/dev/vndbinder都是由libbinder来访问,因此需要指定打开的binder设备。

int main()
{
    ALOGI("Camera provider Service is starting.");
    // The camera HAL may communicate to other vendor components via
    // /dev/vndbinder
    android::ProcessState::initWithDriver("/dev/vndbinder");
    return defaultPassthroughServiceImplementation<ICameraProvider>("legacy/0", /*maxThreads*/ 6);
}

defaultPassthroughServiceImplementation

路径  system/libhidl/transport/include/hidl/LegacySupport.h

        配置binder线程个数,然后调用registerPassthroughServiceImplementation

        joinRpcThreadpool参考这篇Android Binder 服务端分析_we1less的博客-优快云博客

template<class Interface>
__attribute__((warn_unused_result))
status_t defaultPassthroughServiceImplementation(std::string name,
                                            size_t maxThreads = 1) {
    configureRpcThreadpool(maxThreads, true); //配置binder线程
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值