Linux嵌入式学习-远程过程调用-Binder系统
Binder系统的C程序使用示例
IPC : Inter-Process Communication, 进程间通信
RPC : Remote Procedure Call, 远程过程调用
这里我们直接只用android系统中已经实现好的Bindrt系统。
具体源代码在 frameworks\native\cmds\servicemanager\目录下。
service_manager.c :
a. binder_open
b. binder_become_context_manager
c. binder_loop(bs, svcmgr_handler);
c.1 res = ioctl(bs->fd, BINDER_WRITE_READ, &bwr);
c.2 binder_parse
// 解析
// 处理 : svcmgr_handler
SVC_MGR_GET_SERVICE/SVC_MGR_CHECK_SERVICE : 获取服务
SVC_MGR_ADD_SERVICE : 注册服务
// 回复
bctest.c
注册服务的过程:
a. binder_open
b. binder_call(bs, &msg, &reply, 0, SVC_MGR_ADD_SERVICE)
// 含有服务的名字
// 它会含有servicemanager回复的数据
// 0表示servicemanager
// code: 表示要调用servicemanager中的"addservice函数"
获取服务的过程:
a. binder_open
b. binder_call(bs, &msg, &reply, target, SVC_MGR_CHECK_SERVICE)
// 含有服务的名字
// 它会含有servicemanager回复的数据, 表示提供服务的进程
// 0表示servicemanager
// code: 表示要调用servicemanager中的"getservice函数"
binder.c (封装好的C函数)
相关代码:https://github.com/qq2216691777/AndroidStudioProjects
版本 V10
最新文章
- 【转】利用反射快速给Model实体赋值
- 导出excel用ajax不行,提交form表单可以
- 第七章 springboot + retrofit(转载)
- 基于VC的声音文件操作(五)
- BZOJ4707 : B君的技巧
- 使用nodejs中httpProxy代理时候出现404异常
- 详细讲解 关于Linux静态库和动态库的分析
- FFT(快速傅里叶变换):HDU 5307 He is Flying
- #Java编程题-百钱百鸡
- C和指针---读书笔记。
- QTREE - Query on a tree
- javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)
- Bootstrap常用样板
- jQuery 获取url中的参数
- django内置的认证系统
- Alpha冲刺4
- AIS系统(转)
- iOS UI布局-VFL语言
- SAE java应用读写文件(TmpFS和Storage)
- Learn X in Y minutes Where X=c++
热门文章
- Verilog 分频器
- 通过 GraalVM 将 Java 程序编译成本地机器码!
- 整理一下《java并发编程实战》中的知识点
- 老猿学5G:多量纲计费与QoS的QCI、5QI、ARP、GBR和MBR
- PyQt+moviepy音视频剪辑实战文章目录
- 第九章、Qt Designer可视化设计界面布局组件介绍
- PyQt(Python+Qt)学习随笔:模式窗口的windowModality属性与modal属性
- PyQt(Python+Qt)学习随笔:Qt Designer组件属性编辑界面中对话窗QDialog的modal属性
- Leetcode学习笔记(2)
- 攻防世界 web进阶区 lottery