当前位置: 首页 > 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);

相关文章:

  • 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开发效率的完整指南
  • 重庆哪家公司做网站好/专业竞价托管
  • 专门教人做点心的网站/全网优化哪家好
  • 利用渗透的网站做寄生虫/如何线上推广自己产品
  • 人才网招聘网官网/seo推广小分享
  • 保定网站建设公司排名/品牌营销策划公司排名
  • 用c 做网站和数据库方法/seo的培训课程