HIDL学习笔记_3

HIDL系列四 绑定式的案例及理解(多篇):  https://chendongqi.me/2019/09/08/hidl-binderizd/
Android Treble 架构下的HIDL:https://ruleizhou.github.io/2019/07/25/Android-Treble-%E6%9E%B6%E6%9E%84%E4%B8%8B%E7%9A%84HIDL/  --已看

 

一、passthrough 模式HAL的注册和使用

1. service 注册

使用 HIDL 接口,hidl-gen 产生 cpp 代码后,将下面的注释去掉,使用这个直通式的注册函数

IPerf* HIDL_FETCH_IPerf(const char* /* name */) {
    LOG_D("+");
    return new Perf();
}

然后到生成的 perf.cpp 中实现 Perf 类。

 

2. client 使用

(1) 获取服务

复制代码
static android::sp<IPerfV1_0> gPerfHalV1_0 = nullptr;
static android::sp<IPerfV1_1> gPerfHalV1_1 = nullptr;
static android::sp<IPerfV1_2> gPerfHalV1_2 = nullptr;

static bool getPerfHal() {
    if (gPerfHalV1_0 == nullptr) {
        gPerfHalV1_0 = IPerfV1_0::getService();
        if (gPerfHalV1_0 != nullptr) {
            ALOGI("Loaded perf HAL 1.0 service");
            gPerfHalV1_1 = IPerfV1_1::castFrom(gPerfHalV1_0);
            if (gPerfHalV1_1 != nullptr) {
                ALOGI("Loaded perf HAL 1.1 service");
                    gPerfHalV1_2 = IPerfV1_2::castFrom(gPerfHalV1_1);
                    if (gPerfHalV1_2 != nullptr)
                        ALOGI("Loaded perf HAL 1.2 service");
            }
        } else {
            ALOGI("Couldn't load power HAL service");
            gPerfHalExists = false;
        }
    }

    if (gPerfHalV1_2 == nullptr) {
        ALOGE("[getPerfHal] nullptr");
        return false;
    }

    return true;
}
复制代码

(2) 使用服务

gPerfHalV1_2->perfLockAcquire(hdl, duration, rscList, my_tid);
gPerfHalV1_2->perfLockRelease(hdl, my_tid);

 

3. 说明

这种直通式的hal,hal的响应函数是运行在调用者的线程的,没有经过binder跨进程调用。使用 service list 命令也看不到HIDL直通式实现的hal,也说明了其不是一个hal服务。

# service list | grep Perf
//对比:
# service list | grep suspend
269     suspend_control: [android.system.suspend.ISuspendControlService]

 

posted on   Hello-World3  阅读(217)  评论(0编辑  收藏  举报

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示