zoukankan      html  css  js  c++  java
  • GP TEE Client API基本概念

    TEE Client API关键原则是:

    C语言

    阻塞式函数

    源码级别的可移植性

    客户端内存分配

    零拷贝数据传输

    通过指针共享内存

    专注于定义基础通信机制

    TEE Client AP基础概念:

    TEE Context:TEE Context是CA和TEE之间的逻辑连接的抽象。

    必须先初始化TEE Context,然后才能在该TEE Context所表示的TEE中创建CA与TA间的会话。当不再需要与TEE的连接时,应终止TEE Context,从而释放系统资源。

    Session:Session是CA和TA之间的逻辑连接的抽象。会话由CA在特定的TEE Context内打开。

    在创建新会话时,CA必须使用UUID标识其希望连接的TA。

    Command:Command是一个会话中CA和TA的通信单元。

    当启动新命令时,CA通过传递数字标识符来标识其希望执行TA中的对应功能,并提供TA需要的数据。命令调用将阻塞CA线程,等待来自TA的答复,CA可以使用多线程来并发处理多个命令。

    Operation Payload:OpenSession和InvokeCommand可以携带payload,载荷存储在TEEC_Parameter数据结构中,可以携带四个TEEC_Parameter。

    每个Parameter是内存引用或值参数,内存引用参数用于通过共享内存缓冲区交换数据,值参数以两个32位整数的形式携带少量数据。

    内存引用包含已注册内存引用或临时内存引用,注册内存引用是在操作之前创建的共享内存块中的区域,临时内存引用直接指定了CA拥有的一块内存缓冲区,该缓冲区在执行操作期间由TEE Client API临时注册。

    Shared Memory:共享内存是在CA内存空间中分配的内存区域,可用于在CA和TA之间传输数据。

    共享内存可以是现有的CA内存,该内存随后通过TEE Client API注册,也可以是CA使用TEE Client API分配的内存。共享内存可以注册或分配一次,然后在多个命令中使用,甚至可以在多个会话中使用,前提是它们存在于创建共享内存的TEE Context范围内。

    零拷贝数据传输——在可能的情况下,TEE Client API下的通信通道的实现应尝试将共享内存直接映射到TA内存空间,从而实现真正的零拷贝数据传输。CA开发人员应注意,让TEE Client API使用TEEC_AllocateSharedMemory函数分配内存缓冲区可最大程度地利用零拷贝交换成功共享它。

    Memory References:内存引用是某个特定操作实际共享的字节范围,表示为TEEC_MemoryReference或TEEC_TempMemoryReference数据结构。

    内存引用类型包含有,

    TEEC_MEMREF_TEMP_INPUT、TEEC_MEMREF_TEMP_OUTPUT、TEEC_MEMREF_TEMP_INOUT,临时内存引用预示着该参数指向要共享的内存缓冲区,而不是指向共享内存控制结构。在执行操作期间,此CA缓冲区将被临时共享。

    TEEC_MEMREF_WHOLE,整个内存引用实现了一种轻量级的机制,可以共享整个父级共享内存块,而无需复制内存引用中共享内存结构控制字段的内容。使用此内存类型时,整个共享内存区域将与父共享内存指定的方向标志共享。

    TEEC_MEMREF_PARTIAL_INPUT、TEEC_MEMREF_PARTIAL_OUTPUT、TEEC_MEMREF_PARTIAL_INOUT,部分内存引用是指父共享内存块的子区域,允许该块内的任何区域与TA共享。

    Resource Cleanup:

    释放Shared Memory时,客户端代码必须确保在挂起的操作中未引用它

    关闭会话时,会话中不得有任何待处理的操作

    在终止TEE Context时,其范围内不得有任何打开的会话

  • 相关阅读:
    jQuery鼠标事件
    jQuery阻止事件冒泡
    confirm() :带有指定消息和 OK 及取消按钮的对话框
    Win10 Nodejs搭建http-server注意点
    console.dir()可以显示一个对象所有的属性和方法
    git 每次commit之前都要重新配置config
    javascript构造函数类和原型prototype定义的属性和方法的区别
    CSS 超出部分显示省略号
    H5 与 IOS的爱恨情仇(兼容问题)
    ES6之reduce用法
  • 原文地址:https://www.cnblogs.com/caidi/p/14692865.html
Copyright © 2011-2022 走看看