先看一个示例,展示了tmpref和memref的区别, 其中:

  • local buffer、buffer on heap 为tmpref
  • explicit shared memory buffer 为memref
// More or less pseudo-code
TEEC_SharedMemory sharedBuf = {0};
char* heapBuf = NULL;// local buffer
char localBuf[] = "HELLO";
int bufSize = sizeof(localBuf);// buffer on heap
heapBuf = (char*)malloc(bufSize);
memcpy(heapBuf, localBuf, bufSize);// explicit shared memory buffer
TEEC_AllocateSharedMemory(&ctx, &sharedBuf);// prepare paramTypes
op.paramTypes = TEEC_PARAM_TYPES(TEEC_MEMREF_TEMP_INPUT,TEEC_MEMREF_WHOLE,TEEC_MEMREF_TEMP_INPUT,TEEC_NONE
);
op.params[0].tmpref.buffer = localBuf;
op.params[0].tmpref.size = bufSize;
op.params[1].memref.parent = &sharedBuf;
op.params[1].memref.size = bufSize;
op.params[2].tmpref.buffer = heapBuf;
op.params[2].tmpref.size = bufSize ;// invoke some command
TEEC_InvokeCommand(&sess, TA_FOO_CMD_DO_SOMETHING, &op, &err_origin);free(heapBuf);
TEEC_ReleaseSharedMemory(&sharedBuf);

Shared Memory Buffer Lifetime

对于这三种buf,如下做出了一个总结

总结

在TEEC_OpenSession()或TEEC_InvokeCommand()调用时:

  • 如果是tmpref(local buf、heap buf),那么在teec_pre_process_tmpref()中会先调用TEEC_RegisterSharedMemory(),先到kernel中alloc_pages()一块内存,然后mmap()到到shadow_buffer ,. 然后走non zero-copy流程,将tmpref拷贝到shadow_buffer
  • 如果是memref,说明已经调用过TEEC_AllocateSharedMemory(),该内存是在Kernel通过alloc_pages分配的,走zero-copy流程,无需数据拷贝

CA/TA参数传输中tmpref,memref和Value的区别相关推荐

  1. C#参数列表中的this(扩展方法)

    参数列表中this的这种用法是在.NET 3.0之后新增的一种特性---扩展方法.通过这个属性可以让程序员在现有的类型上添加扩展方法(无需创建新的派生类型.重新编译或者以其他方式修改原始类型). 扩展 ...

  2. 网络传输中的那些编码之-base64编码

    在前面一篇文章中,这里介绍了URL编码的一些知识点,本文将对网络中另外一个常见的编码方式base64编码进行介绍. 同样的,按照之前的介绍方式,本文将从如下几个方面进行介绍: 什么是base64编码 ...

  3. vue-router 的总结(导航守卫、组件过渡、组件间参数传输、懒加载)

    在实际项目中很多地方需要router的运用,下面从实践运用的例子总结一下需要引用router的地方 导航守卫:当用户没有登录时,限制用户不能访问某些页面 组件过渡,当页面中切换会出现动态的切换效果 组 ...

  4. loadrunner中的c函数----从参数列表中取参数并与特定字符进行字符串比较。

    今天在www.sztest.net上看到一个关于lr的问题,自己试着解决了一下.主要是想做出一个从参数列表中取参数,并和字符串常量进行比较的功 能.把代码贴到下面.其实是很简单的.问题主要出现在lr_ ...

  5. delphi中checkcombobox最大长度_并行光信号传输中的信道间传播时间偏差

    1. 并行光传输中的时间偏差Skew 数据通信中100G/400G方案中多以空分复用的方式采用MPO平行光信号传输.在多路光纤平行传输数据时,多路信号总会有一个时间偏差,比如其中一路从发射端到接收端用 ...

  6. 替换 wcf 消息传输中的 命名空间

    替换 wcf 消息传输中的 命名空间,http://vanacosmin.ro/Articles/Read/WCFEnvelopeNamespacePrefix 转载于:https://www.cnb ...

  7. 网络传输中的两个阶段、阻塞IO、非阻塞IO和多路复用

    今天学习了网络传输中的两个阶段.阻塞IO.非阻塞IO和多路复用 一.网络传输中的两个阶段 分别是 waitdata 和 copydata send就是copydata recv是waitdata和co ...

  8. Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)

    MD5和RSA是网络传输中最常用的两个算法,了解这两个算法原理后就能大致知道加密是怎么一回事了.但这两种算法使用环境有差异,刚好互补. 一.MD5算法 首先MD5是不可逆的,只能加密而不能解密.比如明 ...

  9. [专题目录]-CA/TA development导读目录

    CA/TA development导读目录: Title Description Status 01-How to setup SDK and compile TAs done 02-CA/TA编程: ...

最新文章

  1. AIX HA模拟宕机--维护磁带机
  2. Data Science | 数据分析
  3. shiro 文档_spring---Shiro拦截器
  4. CTF web总结--利用mysql日志getshell
  5. 不同版本GCC编译器之间的切换
  6. Spark对Kafka两种连接方式的对比——Receiver和Direct
  7. sap 一代增强_在SAP故乡,感受“边缘智能”之变
  8. macOS Monterey新问题:“内存泄漏”,应用后台运行消耗上百 GB 内存
  9. tyvj1467 通向聚会的道路
  10. Flink学习笔记04:将项目打包提交到Flink集群上运行(Scala版)
  11. mysql-connector-java-8.0.26.jar MySQLJDBC下载
  12. Moo Slidebox
  13. 【CV细粒度识别论文总结】The Devil is in the Channels: Mutual-Channel Loss for Fine-Grained Image Classification
  14. 微信IPAD协议安卓协议DEMO,登录篇#1
  15. linux进入欢迎界面一直重启,Linux无限重启怎么办
  16. 卫生保健所短信群发模板:预约挂号、就诊提醒、检查结果通知
  17. vn.py源码解读(八、回测结果计算代码解析)
  18. 计算机网络base,计算机网络中的术语100Base-TX/FX指的是什么?
  19. 工单服务管理系统开发
  20. 苹果手机浏览器 不支持line-height属性的解决方法

热门文章

  1. 小程序跳转样式布局错乱_小程序 wxss 样式毁三观
  2. Python:pmml格式文件的简介、安装、使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略
  3. 成功解决 利用plt.plot绘图时,横坐标出现浮点小数而不是整数的情况(坐标轴刻度)
  4. 成功解决IndexError: index 0 is out of bounds for axis 1 with size 0
  5. ML之RFDT:利用RF(RFR)、DT(DTR)两种算法实现对boston(波士顿房价)数据集进行训练并预测
  6. TF之TF flags:TF flags(命令行解析)的简介、安装、使用方法之详细攻略
  7. 4.1 Tensorflow:卷积函数
  8. angularJs基础学习
  9. nginx发布antd-pro项目(别人发的,未测试)
  10. 看似简单但容易忽视的编程常识