Android文章收藏Binder机制详解

Binder驱动概述

2018-04-03  本文已影响262人  十年开发程序员

1.1 概述

        Binder驱动是Android专用的,但底层的驱动架构与Linux驱动一样。binder驱动在以misc设备进行注册,作为虚拟字符设备,没有直接操作硬件,只是对设备内存的处理。主要是驱动设备的初始化(binder_init),打开 (binder_open),映射(binder_mmap),数据操作(binder_ioctl)。

    该源码在系统源码android-5.0.1_r1\frameworks\native\cmds\servicemanager\bind.c中

如果在座的同学没有系统源码的可以找我索取 2014753635

源码展示


1.2 系统调用

        用户态的程序调用Kernel层驱动是需要陷入内核态,进行系统调用(syscall),比如打开Binder驱动方法的调用链为: open-> __open() -> binder_open()。 open()为用户空间的方法,__open()便是系统调用中相应的处理方法,通过查找,对应调用到内核binder驱动的binder_open()方法,至于其他的从用户态陷入内核态的流程也基本一致。

    简单说,当用户空间调用open()方法,最终会调用binder驱动的binder_open()方法;mmap()/ioctl()方法也是同理,在BInder系列的后续文章从用户态进入内核态,都依赖于系统调用过程。

 Binder核心方法

2.1 binder_init

主要工作是为了注册misc设备

、、

上一篇下一篇

猜你喜欢

热点阅读