共享内存

  • 1、共享内存的介绍
  • 2、共享内存的使用

★★★ 友情链接 : 个人博客导读首页—点击此处 ★★★

1、共享内存的介绍

share memory是一块内存区域, 用于non-secure world和secure world的通信.
optee支持两种share memory: 连续的buffer,非连续的buffer
optee是按照buffer来管理共享内存的,而不是按照pool来管理的. 每一个buf需要配置如下属性:
buffer的起始地址和size
该buffer的cache属性
如果是被map到非连续的buf,则列出它所有的块(chunk)

配置成连续的share buffer
CFG_CORE_RESERVED_SHM=y
CFG_SHMEM_START and CFG_SHMEM_SIZE 定义起始地址和size
该memory的type是MEM_AREA_NSEC_SHM
在non-secure world需要调用OPTEE_SMC_GET_SHM_CONFIG来获取:
share memory的物理地址和size
share memory的cached属性

非连续的share memory(动态注册的)
CFG_CORE_DYN_SHM=y

在使用share memory之前,REE需要调用OPTEE_MSG_CMD_REGISTER_SHM注册share memroy, 在optee中share memroy最小的chunk单位是4k bytes;

共享内存是在linux driver中分配的,linux kernel需支持CONFIG_GENERIC_ALLOCATION 来分配/释放内存物理块. optee的linux driver依赖于linux内核dma-buf支持(CONFIG_DMA_SHARED_BUFFER)来跟踪共享内存缓冲区引用

2、共享内存的使用

TEEC_AllocateSharedMemory(…) 在linux中分配内存
TEEC_RegisterSharedMemory(…) 到optee中注册该内存

(还会继续更

optee的共享内存的介绍相关推荐

  1. linux c之使用共享内存实现进程间通信

    这篇博客有别人的也有自己改的,作为读书笔记,勿喷. 1.共享内存的介绍 共享内存就是允许两个不相关的进程访问同一个逻辑内存.共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式.不同进 ...

  2. linux open 头文件_linux下通过共享内存和mmap实现进程间通讯

    前言 最近在学习GNU/Linux内核,看到mmap的时候书上说: mmap/munmap接口函数是用户最常用的两个系统调用接口,无论是在用户程序中分配内存.读写大文件.链接动态库文件,还是多进程间共 ...

  3. linux mmap实例_Linux下通过共享内存和mmap实现进程间通讯(含实例)

    前言 最近在学习GNU/Linux内核,看到mmap的时候书上说: mmap/munmap接口函数是用户最常用的两个系统调用接口,无论是在用户程序中分配内存.读写大文件.链接动态库文件,还是多进程间共 ...

  4. 进程间通信之共享内存SHM

    文章目录 1. system-v IPC简介 2. 函数ftok()函数介绍 3. 共享内存SHM介绍 4. 共享内存SHM相关接口函数 5. 共享内存SHM代码示例 1. system-v IPC简 ...

  5. Android系统匿名共享内存Ashmem(Anonymous Shared Memory)简要介绍和学习计划

    在Android系统中,提供了独特的匿名共享内存子系统Ashmem(Anonymous Shared Memory),它以驱动程序的形式实现在内核空间中.它有两个特点,一是能够辅助内存管理系统来有效地 ...

  6. PHP IPC函数介绍---共享内存

    以下是php的共享内存常用函数,用于进程间的通信 shm_attach - Creates or open a shared memory segment shm_detach - Disconnec ...

  7. 共享内存 传一个类指针_共享内存介绍:Shared Memory

    In computer hardware, shared memory refers to a (typically large) block of random access memory (RAM ...

  8. 进程间通信学习小结(共享内存)

    要使用共享内存,应该有如下步骤:1.开辟一块共享内存 shmget() 2.允许本进程使用共某块共享内存 shmat() 3.写入/读出 4.禁止本进程使用这块共享内存 shmdt() 5.删除这块共 ...

  9. 进程间通信IPC之--共享内存

    每个进程各自有不同的用户地址空间,任何一个进 程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲 区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲 ...

最新文章

  1. CSS3如何实现0.5边框
  2. 两种交换排序算法:冒泡排序和快速排序
  3. dubbo admin默认端口_Dubbo学习(四) Dubbo 从下载到编译成功
  4. mysql四种输入_mysql四种事务隔离级别
  5. android 自定义switch控件,Android中switch自定义样式
  6. 深度学习-服务端训练+android客户端物体识别实战(caffe入门教程+mobilenet+ncnn+android)
  7. java jpms_JDK9的新特性:JPMS模块化
  8. PHP 中数组获取不到元素
  9. Android 如何全局获取Context
  10. Acrel-3200远程预付费电能管理系统在福安东百城的应用
  11. vs自拉软件全名_vs全新操作软件说明书
  12. JavaScript 上万条数据 导出Excel文件 页面卡死
  13. vue项目中样式重置 自动注入less
  14. 设计模式(二):设计原则
  15. TECO状态的生产订单结算到在制品怎么办?
  16. Python微信公众号开发平台
  17. 【MySQL基础】MySQL介绍及安装
  18. cocos creator制作游戏实战-Flak Cannon(二)
  19. 删除 python print()输出的字符里的空格
  20. 开发 iOS 的 VOIP 客户端

热门文章

  1. 赛迪155页PPT中国“新基建”发展研究报告!
  2. SDN教育城域网解决方案
  3. Algorithm:【Algorithm算法进阶之路】之数据结构基础知识
  4. DL之Xception:Xception算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  5. Matlab:利用Matlab编程实现模拟分子布朗运动的动画展示
  6. DL之AE:自编码器AutoEncoder的简介、应用、经典案例之详细攻略
  7. 深入浅出统计学 第二三章 量度
  8. Ubuntu18.04 MariaDB
  9. C#实现水晶报表绑定数据并实现打印
  10. springboot1.5.10兼容高版本6.1.1elasticsearch