美文网首页
Binder学习笔记02

Binder学习笔记02

作者: tangYaXin | 来源:发表于2020-10-27 12:15 被阅读0次

    这篇文章记录下 ServiceManager的注册

    1.注册,ServiceManager.c中的main方法

    首先看binder_open方法 这里首先binder_open会调用驱动层的binder_open方法,打开binder驱动,保存当前进程一些信息.然后会调用mmap也是会调用驱动层的binder_mmap方法,映射一块共享内存,大小为128k 这里会调用驱动层的binder_ioctl方法,命令为BINDER_SET_CONTEXT_MGR 然后binder_new_node 这里就设置SM为大管家完成,再回到main方法,看看binder_loop方法 然后binder_write方法,readbuf携带命令BC_ENTER_LOOPER 这里又会调用驱动层binder_ioctl方法,有写数据不为空,命令为BINDER_WRITE_READ 因为写数据不为空,则会调用write方法,且前面携带了命令头为BC_ENTER_LOOPER,则 到这里就完了,然后在回到前面loop方法中 写完数据后,然后进入for循环,此时读有数据,继续调用驱动层读写方法 进入读方法 这里因为还没有任务,所以为true 因为现在todo队列为空,则会调用wait_event_freezable_exclusive方法进行等待,到这里就完了

    ServiceManager的注册,大致干了3件事

    1,打开binder驱动,内存映射

    2,设置ServiceManager为大管家(守护进程)

    3,写入数据,设置状态,然后开启循环,没有任务时等待.

    相关文章

      网友评论

          本文标题:Binder学习笔记02

          本文链接:https://www.haomeiwen.com/subject/zqztvktx.html