binder源码分析(一)

本文从servicemanager开始,详细分析Android O版本中binder的注册和获取服务过程。首先介绍servicemanager的C实现,通过binder_become_context_manager()函数中的ioctl调用来设置context manager。接着探讨binder_loop()如何启动服务管理器线程,并在binder_ioctl中处理消息。由于初始状态下没有任务,binder_thread_read会阻塞等待。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

binder源码分析(一)
binder源码分析(二)
binder源码分析(三)
binder源码分析(四)
binder源码分析(五)

前言

接触Android的时候就对binder有所耳闻,作为进程间通信的工具,binder驱动,拷贝数据的次数少,也不是太复杂,前段时间看来了些源码,自己尝试分析了之后还是受益匪浅,写下来,日后也可以看看回顾一下。

这里也是servicemanager开始,串一遍注册和获取服务的过程,分析一下binder的源码。(Android O版本,内核为3.18)

servicemanager

  1. 首先是servicemanager的注册,值得注意的是,servicemanager不是java程序,是用C跑的。
servicemanager.c
int main(int argc, char** argv)
{
   
    struct binder_state *bs;
    union selinux_callback cb;
    char *driver;

    if (argc >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值