
android ---- binder
文章平均质量分 95
android中binder相关知识
私房菜
独乐乐不如众乐乐!!!!
展开
-
Android Binder通信原理(八):IPC权限控制
binder 简介servicemanager启动service注册service获取Java 端的service 注册和获取、native下的C-Sjava 下的C-S。本文进一步分析 IPC 下的权限控制。原创 2023-07-04 10:46:27 · 1035 阅读 · 0 评论 -
Android Binder通信原理(七):java 下的C-S
binder 简介servicemanager启动service注册service获取Java 端的service 注册和获取。在前一文中,通过实例,详细地说明了native 下 的C-S 通信原理。本文在之前的基础上,以实例的形式进一步的分析 java 下的 C-S 通信。原创 2023-06-28 15:12:07 · 853 阅读 · 0 评论 -
Android Binder通信原理(六):native下的C-S
binder 简介servicemanager启动service注册service获取Java 端的service 注册和获取。本文在之前的基础上,以实例的形式进一步的分析 native 下的 C-S 通信。原创 2023-06-28 14:43:47 · 1076 阅读 · 1 评论 -
Android Binder通信原理(五):Java 端的service 注册和获取
在阐述相关的知识点,先整理个框架图,后面带着框架图来分析过程:Java 端service 的注册使用 ServiceManager.addService()Java 端service 的获取使用 ServiceManager.getService()入口都是通过 ServiceManager.java,文件位于frameworks/base/core/java/android/os/ServiceManager.java。原创 2023-06-27 17:21:57 · 1888 阅读 · 0 评论 -
Android Binder通信原理(四):service获取
上一文中已经得知如何通过 defaultServiceManager() 得来的 BpInterface 与 servciemanager 进行通信,并分析了addServcie() 的流程,这里再来看下service 的获取过程。原创 2023-06-27 10:19:50 · 2026 阅读 · 0 评论 -
Android Binder通信原理(三):service注册
上一文中详细分析了servicemanger 的启动流程,我们知道 servicemanager 作为 binder 机制中的一个特殊service,利用service map管理所有service,也是所有binder 通信的入口。本文着重分析 service 的注册流程,下一文着重分析service 的获取流程。原创 2023-06-26 15:53:45 · 1914 阅读 · 1 评论 -
Android Binder通信原理(二):servicemanager启动
下图是android 8.0 之前binder 的软件框架,依赖的驱动设备是/dev/binder,binder机制的四要素分别是client、server、servicemanager和binder驱动。对于android 8.0后的binder 和vndbinder依然同这个框架,只不过驱动的设备多加/dev/vndbinder这篇主要分析servicemanger的流程,hwservicemanger后续补充。原创 2023-06-21 16:34:46 · 2057 阅读 · 0 评论 -
Android Binder通信原理(一):简介
在创建时分配一个page大小的内存,缓存区大小比较有限;考虑 PIPE_BUF 和原子操作;信息复制两次,额外的CPU消耗;不合适频繁或信息量大的通信;无须复制,共享缓冲区直接付附加到进程虚拟地址空间,速度快;但进程间的同步问题操作系统无法实现,必须各进程利用同步工具解决;作为更通用的接口,传输效率低,主要用于不通机器或跨网络的通信;常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段;原创 2023-06-21 11:13:20 · 1832 阅读 · 0 评论 -
Binder驱动之内存映射----binder_mmap
一 内存映射函数的实现binder_mmap(kernel/drivers/android/binder.c)static int binder_mmap(struct file *filp, struct vm_area_struct *vma/*用户态虚拟地址空间描述,地址空间在0~3G*/){ int ret; /* 一块连续的内核虚拟地址空间描述,32位体系架构中...转载 2019-08-27 17:05:05 · 1744 阅读 · 0 评论 -
Binder驱动之打开设备----binder_open
一 binder设备打开的函数实现binder_open路径:kernel/drivers/android/binder.cstatic int binder_open(struct inode *nodp, struct file *filp){ struct binder_proc *proc; binder_debug(BINDER_DEBUG_OPEN_CL...转载 2019-08-27 17:03:02 · 1332 阅读 · 0 评论 -
Binder驱动之驱动初始化----binder_init
一 驱动初始化binder_init(kernel/drivers/android/binder.c)static int __init binder_init(void) { ...转载 2019-08-27 16:55:43 · 963 阅读 · 0 评论 -
Binder驱动之设备控制----binder_ioctl -- 三
接前文3.2.2.2 数据接收及任务处理 —— binder_thread_read简单回顾一下前面的逻辑,在binder_ioctl_write_read中,如果bwr.read_size大于0,即进程用户态希望从Binder驱动中收到数据,就调用binder_thread_read进行处理。static int binder_thread_read(struct bi...转载 2019-08-27 17:26:38 · 1759 阅读 · 0 评论 -
Binder驱动之设备控制----binder_ioctl -- 二
接前文3.2 数据读写3.2.1BINDER_WRITE_READ首先我们来看一下BINDER_WRITE_READ的定义如下,它是通过调用内核提供的_IOWR宏来构造。关于ioctl命令的构造方法,有兴趣可以看看这篇文章, 基本讲清楚了。 ——构造IOCTL学习心得.#define BINDER_WRITE_READ _IOWR(‘b’/*type 魔数域*/, ...转载 2019-08-27 17:21:45 · 2571 阅读 · 0 评论 -
Binder驱动之设备控制----binder_ioctl -- 一
概述ioctl是Linux中常见的系统调用,它用于对底层设备的一些特性进行控制的用户态接口,应用程序在调用ioctl进行设备控制时,最后会调用到设备注册struct file_operations结构体对象时的unlocked_ioctl或者compat_ioctl两个钩子上,具体是调用哪个钩子判断标准如下:compat_ioctl : 32位的应用运行在64位的内核上,这个钩子被调用。...转载 2019-08-27 17:14:03 · 2471 阅读 · 0 评论