首页 > 其他分享 >FastRPC资料汇总

FastRPC资料汇总

时间:2023-05-07 22:11:08浏览次数:45  
标签:dma remote 汇总 primIn 资料 FastRPC handle COPY uint32

 

DEF CON Safe Mode - Slava Makkaveev - Pwn2Own Qualcomm compute DSP for fun and profit.pdf

 

https://github.com/raspberrypi/linux/blob/stable/drivers/misc/fastrpc.c

 

external_fastrpc/fastrpc_apps_user.c at 556fa85d14bfdac3c211e27cec9b975f9efb50c6 · Evolution-X/external_fastrpc (github.com)

 

vendor_qcom_proprietary/remote.h at master · TTTT55/vendor_qcom_proprietary · GitHub

 

// https://github.com/TTTT55/vendor_qcom_proprietary/blob/00578532a2e2e308ebcf26cf3b7c0c89b4f4cf02/prebuilt_HY11/target/product/msm8953_32/obj/include/fastrpc/inc/remote.h#L29

typedef uint32_t remote_handle;
typedef uint64_t remote_handle64; //! used by multi domain modules
                                  //! 64 bit handles are translated to 32 bit values
                                  //! by the transport layer

typedef struct {
   void *pv;
   size_t nLen;
} remote_buf;

typedef struct {
   int32_t fd;
   uint32_t offset;
} remote_dma_handle;

typedef union {
   remote_buf     buf;
   remote_handle    h;
   remote_handle64 h64; //! used by multi domain modules
   remote_dma_handle dma;
} remote_arg;



// https://github.com/TTTT55/vendor_qcom_proprietary/blob/00578532a2e2e308ebcf26cf3b7c0c89b4f4cf02/commonsys-intf/adsprpc_ship/loadalgo_example/loadalgo_stub.c#L512

static __inline int _stub_method_2(remote_handle64 _handle, uint32_t _mid, uint32_t _in0Fd[1], uint32_t _in0Offset[1], uint32_t _in0Len[1], uint32_t _in1[1], uint32_t _in2[1], uint32_t _in3[1], uint32_t _rout4Fd[1], uint32_t _rout4Offset[1], uint32_t _rout4Len[1], uint32_t _in5[1], uint32_t _in6Fd[1], uint32_t _in6Offset[1], uint32_t _in6Len[1], uint32_t _in7[1]) {
   remote_arg _pra[4];
   uint32_t _primIn[5];
   remote_arg* _praHandleIn;
   remote_arg* _praHandleROut;
   int _nErr = 0;
   _pra[0].buf.pv = (void*)_primIn;
   _pra[0].buf.nLen = sizeof(_primIn);
   _praHandleIn = (_pra + (1 + 0));
   _COPY(&(_praHandleIn[0].dma.fd), 0, _in0Fd, 0, sizeof(uint32_t));
   _COPY(&(_praHandleIn[0].dma.offset), 0, _in0Offset, 0, sizeof(uint32_t));
   _ASSERT(_nErr, remote_register_dma_handle(*_in0Fd, *_in0Len) == 0);
   
   _COPY(_primIn, 0, _in1, 0, 4);
   _COPY(_primIn, 4, _in2, 0, 4);
   _COPY(_primIn, 8, _in3, 0, 4);
   _praHandleROut = ((_pra + (1 + 0)) + 2);
   _COPY(&(_praHandleROut[0].dma.fd), 0, _rout4Fd, 0, sizeof(uint32_t));
   _COPY(&(_praHandleROut[0].dma.offset), 0, _rout4Offset, 0, sizeof(uint32_t));
   _ASSERT(_nErr, remote_register_dma_handle(*_rout4Fd, *_rout4Len) == 0);
   _COPY(_primIn, 12, _in5, 0, 4);
   _COPY(&(_praHandleIn[1].dma.fd), 0, _in6Fd, 0, sizeof(uint32_t));
   _COPY(&(_praHandleIn[1].dma.offset), 0, _in6Offset, 0, sizeof(uint32_t));
   _ASSERT(_nErr, remote_register_dma_handle(*_in6Fd, *_in6Len) == 0);
   _COPY(_primIn, 16, _in7, 0, 4);
   _ASSERT(_nErr, 2 <= 15);
   _ASSERT(_nErr, 1 <= 15);
   _TRY(_nErr, __QAIC_REMOTE(remote_handle64_invoke)(_handle, REMOTE_SCALARS_MAKEX(0, _mid, 1, 0, 2, 1), _pra));
   _CATCH(_nErr) {}
   return _nErr;
}

 

标签:dma,remote,汇总,primIn,资料,FastRPC,handle,COPY,uint32
From: https://www.cnblogs.com/sinferwu/p/17380292.html

相关文章

  • Django笔记三十六之单元测试汇总介绍
    本文首发于公众号:Hunter后端原文链接:Django笔记三十六之单元测试汇总介绍Django的单元测试使用了Python的标准库:unittest。在我们创建的每一个application下面都有一个tests.py文件,我们通过继承django.test.TestCase编写我们的单元测试。本篇笔记会包括单元测试的......
  • MySQL调优 - 汇总
    汇总下平时开发中对mysql的调优过程。(一)mysqlserver的调优首先需要知道哪些配置可以调整,通过showvariables可以查看配置项。可以通过set方式更改配置项:方式一:(例子)set long_query_time=1;但仅对当前session生效,新连接更改无作用,如下方式二:(例子)setgloballong_query_t......
  • 资料分析——快速计算A/B*(1+b/1+a)
    该公式适用于基期的比重、平均数、倍数例如本题:如果直接计算:即1973300/2069*0.0933/1.0716直接截位很浪费时间答案解法:前面截位计算,后面预估与1的关系。同理(列式后,本题一定在A、B中选):......
  • Freeswitch挂断原因汇总
    NORMAL_RELEASE正常释放NORMAL_CLEARING双方都由运营商挂断,正常CALL_REJECTED呼叫被拒绝,正常USER_BUSY用户占线繁忙,正常NO_ANSWER呼叫未应答,正常NO_USER_RESPONSE呼叫未应答超时,正常NORMAL_TEMPORARY_FAILURE呼叫线路超时TIMEOUT超时(一般是SIP超时)NO_RO......
  • 分布式系统唯一ID生成方案汇总
    系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结。生成ID的方法有很多,适应不同的场景、需求以及性能要求。所以有些比较复杂的系统会有多个ID生成的策略。下面就介绍一些常见的ID生成策略。1.数据库自增长序列或字段最常见的方式。利用数据库,全数......
  • 前端技能汇总
    项目起源前端知识结构图(@jayli)。前端开发知识结构前端工程师浏览器IE6/7/8/9FirefoxChrome/Safari/Opera编程语言JavaScript/Node.jsJavaScript语言精粹切页面HTMLCSSPhotoShop/Paint.net开发工具IDEVIM/SublimeText2Notepad++/EditPlus调......
  • 汇总
    作业链接Alpha阶段项目复审链接事后诸葛亮分析链接......
  • 关于java反射机制基础资料
    Java的反射机制允许在程序运行期间,借助反射API获取类的内部信息,并能直接操作对象的内部属性及方法。Java反射机制提供的功能:在运行时,使用反射分析类的能力,获取有关类的一切信息(类所在的包、类实现的接口、标注的注解、类的数据域、类的构造器、类的方法等)在运行时,使用反......
  • UnaryOperator汇总
    1packagecom.example.springstudy.test.functions;23importcn.hutool.core.util.ReflectUtil;4importcom.example.springstudy.test.User;5importcom.google.common.collect.Lists;67importjava.lang.reflect.Field;8importjava.util.List;9i......
  • laravel 知识汇总|定时任务|
    1.helloword生命周期生命周期Laravel框架门面Facade源码分析门面的运用2.数据库配置3.migrate创建数据库laravel中migration数据迁移4.composer的使用,require和require-dev区别5.自动生成模型,自动生成代码注释:idea生成器:https://chujc.github.io/2019/05/15/%E5%B7%A5......