- 博客(6)
- 资源 (2)
- 收藏
- 关注
原创 Linux IO控制命令生成
在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值。cmd除了可区别数字外,还包含有助于处理的几种相应信息。 cmd的大小为 32位,共分 4 个域:bit31~bit30 2位为 “区别读写” 区,作用是区分是读取命令还是写入命令。bit29~bit16 14位为 "数据大小" 区,表示 ioctl() 中的 arg 变量传送的内
2013-07-15 09:08:32 2886
原创 深入分析Android Binder 驱动
Android Binder是一种在Android里广泛使用的一种远程过程调用接口。从结构上来说Android Binder系统是一种服务器/客户机模式,包括Binder Server、Binder Client和Android Binder驱动,实际的数据传输就是通过Android Binder驱动来完成的,这里我们就来详细的介绍Android Binder驱动程序。通常来说,Bin
2013-07-13 11:27:19 14444 10
原创 Android服务函数远程调用源码分析
ServiceManager进程根据服务名称在自身维护的服务链表中查找ServiceManager进程引用该服务在内核空间的Binder节点的Binder引用对象描述符,根据该描述符找到ServiceManager在内核空间对该服务Binder节点的Binder引用对象,在根据Binder引用对象找到引用的Binder节点,如果当前服务查询进程不是服务注册进程,则在内核空间中为当前进程创建引用服务Binder节点的Binder引用对象,并将该引用对象的句柄值返回到用户空间中,在用户空间中创建和通信相关的Bp
2013-07-12 19:59:48 3416 1
原创 Android应用程序启动Binder线程源码分析
Android的应用程序包括Java应用及本地应用,Java应用运行在davik虚拟机中,由zygote进程来创建启动,而本地服务应用在Android系统启动时,通过配置init.rc文件来由Init进程启动。Zygote启动Android应用程序的过程请查看文章Zygote孵化应用进程过程的源码分析,关于本地应用服务的启动过程在Android Init进程源码分析中有详细的介绍。无论是And
2013-07-11 14:39:00 5319
原创 Android服务查询完整过程源码分析
前面从不同片段分析了Android的Binder通信机制,本文结合前面介绍的内容,对整个Android的Binder通信过程进行一次完整的分析。分析以AudioService服务的查询为例。private static IAudioService getService(){ if (sService != null) { return sService; } IBinde
2013-07-04 14:52:15 3307 1
原创 Android服务注册完整过程源码分析
前面从不同片段分析了Android的Binder通信机制,本文结合前面介绍的内容,对整个Android的Binder通信过程进行一次完整的分析。分析以AudioService服务的注册过程为例。if (!"0".equals(SystemProperties.get("system_init.startaudioservice"))) { try { Slog.i(TAG, "Aud
2013-07-03 20:55:54 6289 3
Android下拉刷新实现一源码
2013-09-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人