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
Linux嵌入式学习-远程过程调用-Binder系统的更多相关文章
- Linux嵌入式学习-mount命令+nfs挂载失败原因【转】
		
NFS 挂载失败原因[待搜集] 1.挂载时若出现mount.nfs: Input/output error 解决:在客户端也需启动portmap服务 service portmap status[查看 ...
 - linux 驱动学习笔记05--文件系统与设备文件系统
		
查看/proc/devices 文件可以获知系统中注册的设备,第 1 列为主设备号,第 2 列为设备名,如:
 - linux的学习系列 2--文件系统
		
Linux中的所有数据都被保存在文件中,所有的文件被分配到不同的目录.目录是一种类似于树的结构,称为文件系统. 当你使用Linux时,大部分时间都会和文件打交道,通过本节可以了解基本的文件操作,如创建 ...
 - Linux嵌入式学习-ds18b20驱动
		
ds18b20的时序图如下: 复位时序: 读写时序: 以下是程序代码: #include <linux/module.h> #include <linux/init.h> #i ...
 - Linux嵌入式学习-烟雾传感器驱动-字符设备驱动-按键驱动
		
MQ-2烟雾气敏传感器模块在X210v3开发板上的驱动. 现在需要一个MQ-2烟雾气敏传感器模块的驱动.其检测烟雾超过一定的标准后,会返回一个不同的电平,和按键驱动差不多. 但是在编写驱动的时候,需要 ...
 - Linux嵌入式学习-USB端口号绑定
		
由于ubuntu USB设备号为从零开始依次累加,所以多个设备每次开机后设备号不固定,机器人每次开机都要蛋疼的按顺序插, 在网上找到一种方法:udev的规则 udev的规则说明,可以参考博客说明:ht ...
 - Linux嵌入式学习-交叉编译openssl
		
利用arm-none-linux-gnueabi-gcc交叉编译openssl,生成静态库文件libcrypto.a ,libssl.a 1.从openssl官网下载openssl最新版本,我下载的是 ...
 - Linux嵌入式学习-网络配置-ping外网、主机和域名
		
之前用的nfs挂载的文件系统,今天用yaffs2制作的文件系统并写入到nandflash中.但是网络却无法使用了. 首先,我们配置网卡. ifconfig eth0 192.168.1.230 bro ...
 - Linux嵌入式学习-Mplayer交叉编译-undefined reference to `clock_gettime' MPlayer
		
編譯Mplayera. 配置.configure# ./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm --enable-static ...
 
随机推荐
- go语言的指针类型
			
一.指针与引用的相关概念 什么是指针? 指针,全称为指针变量,是用来存储内存地址的一种变量.程序中,一般通过指针来访问其指向的内存地址中的内容(数据). 什么是引用? 引用,是C++中提出来的一种新的 ...
 - 第10.4节  Python模块的弱封装机制
			
一. 引言 Python模块可以为调用者提供模块内成员的访问和调用,但某些情况下, 因为某些成员可能有特殊访问规则等原因,并不适合将模块内所有成员都提供给调用者访问,此时模块可以类似类的封装机制类似的 ...
 - 第15.12节PyQt(Python+Qt)入门学习:可视化设计界面组件布局详解
			
一.引言 在Qt Designer中,在左边部件栏的提供了界面布局相关部件,如图: 可以看到共包含有四种布局部件,分别是垂直布局(Vertical Layout).水平布局(Horizontal La ...
 - tesseract-ocr 图片文字识别
			
本篇记录下python识别图片中的文字 所需的安装配置: 安装库: pip install pytesseract pip install PILLOW 安装 Tesseract-OCR软件: ...
 - Java的字符串操作一些简单的思考
			
Java的字符串操作 1 .1不可变的String String对象事不可变的,String类中的每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符 ...
 - CSS基础-Flexbox
			
flexbox 是一种一维的布局模型,它给 flexbox 的子元素之间提供了强大的空间分布和对齐能力. 说 flexbox 是一种一维的布局,是因为一个 flexbox 一次只能处理一个维度上的元素 ...
 - 手写线程池,对照学习ThreadPoolExecutor线程池实现原理!
			
作者:小傅哥 博客:https://bugstack.cn Github:https://github.com/fuzhengwei/CodeGuide/wiki 沉淀.分享.成长,让自己和他人都能有 ...
 - STL——容器(List)list 的反序排列
			
list.reverse(); //反转链表,比如list包含1, 2, 3, 4, 5五个元素,运行此方法后,list就包含5, 4, 3, 2, 1元素. 1 #include <iostr ...
 - Reflect个人记录
			
Reflect是一个内置方法,并不能通过构造函数的来进行构建 Reflect.construct: 与new操作父有一些类似,相当于new target(...) 例: 我们先自己定义一个类 clas ...
 - 在Chrome、Firefox等高版本浏览器中实现低延迟播放海康、大华RTSP
			
一.背景 现在到处是摄像头的时代,随着带宽的不断提速和智能手机的普及催生出火热的网络直播行业,新冠病毒的大流行又使网络视频会议系统成为商务会议的必然选择,因此RTSP实时视频流播放及处理不再局限于安防 ...