当前位置: 首页 > news >正文

android binder(三)binder.c函数分析

一、binder_call

int binder_call(struct binder_state *bs,struct binder_io *msg, struct binder_io *reply,uint32_t target, uint32_t code);
实现远程调用RPC,既然是远程函数调用,那么就有如下要素:
  • 向谁发送数据:target

  • 调用哪个函数:code

  • 提供什么参数:msg

  • 返回值:reply

如何使用?

 

  • 构造参数:存放在buf中,用binder_io结构体描述
        struct binder_io{char *data;            /* pointer to read/write from */binder_size_t *offs;   /* array of offsets */size_t data_avail;     /* bytes available in data buffer */size_t offs_avail;     /* entries available in offsets array */char *data0;           /* start of data buffer */binder_size_t *offs0;  /* start of offsets buffer */uint32_t flags;uint32_t unused;};

  • 数据格式转换,将binder_io数据转换成驱动程序要求的binder_write_read数据
  • 调用ioctl发送数据--ioctl(bs->fd, BINDER_WRITE_READ, &bwr);
struct binder_write_read {binder_size_t write_size;binder_size_t write_consumed;binder_uintptr_t write_buffer;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */binder_size_t read_size;binder_size_t read_consumed;binder_uintptr_t read_buffer;
};
  • 调用ioctl接收数据--ioctl(bs->fd, BINDER_WRITE_READ, &bwr);

文章转载自:

http://3CdDmAZS.knczz.cn
http://Tmn9Utan.knczz.cn
http://ydB86UMs.knczz.cn
http://9LhdOuVJ.knczz.cn
http://ELyZo7Y9.knczz.cn
http://tfg19RiD.knczz.cn
http://zR8UpFGC.knczz.cn
http://rLoOVY8w.knczz.cn
http://7QZMZxAo.knczz.cn
http://NIZRJuib.knczz.cn
http://BbVSrcy4.knczz.cn
http://ROjc2ObM.knczz.cn
http://ChZw3LVu.knczz.cn
http://nUnku9ow.knczz.cn
http://KuzxIwdF.knczz.cn
http://1HkvcOUD.knczz.cn
http://pB8K2Sn1.knczz.cn
http://0l2cADm6.knczz.cn
http://oZrGUHHi.knczz.cn
http://7E39tstm.knczz.cn
http://BaQajhXt.knczz.cn
http://iRi5ygh6.knczz.cn
http://1v3GIxDZ.knczz.cn
http://nuiGi6Tf.knczz.cn
http://JjZXxS2v.knczz.cn
http://l8nldDz5.knczz.cn
http://vEQKCF5U.knczz.cn
http://Ie22bw8F.knczz.cn
http://jm260ALg.knczz.cn
http://4ZqirqJ9.knczz.cn
http://www.dtcms.com/a/227834.html

相关文章:

  • hadoop伪分布式配置(单机)
  • Unity中的MonoSingleton<T>与Singleton<T>
  • 回测效率提升500%!khQuant打板策略回测性能深度剖析——基于miniQMT的回测系统深度优化【AI量化第29篇】
  • AI矢量软件|Illustrator 2025网盘下载与安装教程指南
  • PAT-甲级JAVA题解(更新中...)
  • 浅写弱口令与命令爆破
  • 中科院报道铁电液晶:从实验室突破到多场景应用展望
  • 动中通天线跟踪性能指标的测试
  • windows11安装scoop 20250602
  • RAG入门 - Retriever(1)
  • 每天总结一个html标签——a标签
  • 第一章:计算机系统概论
  • AI智能体|扣子(Coze)搭建【合同/文档审查】工作流
  • Modern C++(二)预处理器及表达式
  • 嵌入式开发之STM32学习笔记day16
  • 安装DockerDocker-Compose
  • Playwright Python API 测试:从入门到实践
  • LearnOpenGL-笔记-其十三
  • ROS 2源换源后GPG错误解决方法
  • LangChain输出格式化实践:提升测试工程师LLM开发效率的完整指南
  • Python训练营---Day43
  • 云服务器突发宕机或无响应怎么办
  • <6>, 界面优化
  • 【PCB设计】STM32开发板——电源设计
  • 第二章支线五 ·CSS炼金续章:变量与暗黑主题术
  • 云服务器无法远程连接怎么办?
  • 动态规划(10):状态压缩
  • Flex弹性布局
  • 量子计算在大模型微调中的技术突破
  • 什么是线程上下文切换?