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

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://www.xdnf.cn/news/10688.html

相关文章:

  • 审计- 1- 审计概述
  • Python-matplotlib中的Pyplot API和面向对象 API
  • UE5 创建2D角色帧动画学习笔记
  • 网络节点排查
  • RAG系统中如何检测幻觉?
  • 【dshow】VIDEOINFOHEADER2 头文件
  • Arch安装megaton
  • PHP7+MySQL5.6 查立得轻量级公交查询系统
  • ck-editor5的研究 (5):优化-页面离开时提醒保存,顺便了解一下 Editor的生命周期 和 6大编辑器类型
  • 【LeetCode 题解】两数之和(C++/Python 双解法):从语法到算法的全面解析
  • #14 学习日志
  • ②Pybullet干涉检查指令getContactPoints与 getClosestPoints介绍
  • Vue-5-基于JavaScript和plotly.js绘制数据分析类图表
  • ubuntu22.04安装megaton
  • 图像任务中的并发处理:线程池、Ray、Celery 和 asyncio 的比较
  • 经典数学教材推荐(AI相关)
  • rabbitmq Fanout交换机简介
  • 二叉查找树 —— 最近公共祖先问题解析(Leetcode 235)
  • 什么是绿电直连
  • ESP32之Linux编译环境搭建流程
  • 电脑wifi显示已禁用怎么点都无法启用
  • 浅谈量子计算:从实验室突破到产业落地的中国实践
  • Java详解LeetCode 热题 100(23):LeetCode 206. 反转链表(Reverse Linked List)详解
  • 使用pdm+uv替换poetry
  • 20250602在荣品的PRO-RK3566开发板的Android13下的uboot启动阶段配置BOOTDELAY为10s
  • 安装 Hugo
  • Flask + Celery 应用
  • 【C++】23. unordered_map和unordered_set的使用
  • Qt OpenGL 光照实现
  • JAVA-springboot整合Mybatis