首页 > 其他分享 >OPTEE - CA和TA的交互

OPTEE - CA和TA的交互

时间:2024-04-22 10:11:07浏览次数:28  
标签:OPTEE TEE CA tee TEEC ioctl IOC TA

optee整体架构如下图
image
(图片来源:https://zhuanlan.zhihu.com/p/553611279
从以下示例代码中(tab:example-hello_world)我们可以看到,在CA(client application)端调用tee client API的流程如下:

  1. TEEC_InitializeContext()
  2. TEEC_OpenSession()
  3. TEEC_InvokeCommand()
  4. TEEC_CloseSession();
  5. TEEC_FinalizeContext();

这些API都有一个共同的特点(tab:tee_client_api): 通过ioctl()这一系统调用执行相应指令(open()和close()打开/关闭了/dev/tee0这一tee设备,该设备相关信息仍待研究,先按下不表)。

TEEC_InitializeContext() -> ioctl(fd, TEE_IOC_VERSION, &vers)
TEEC_OpenSession() -> ioctl(ctx->fd, TEE_IOC_OPEN_SESSION, &buf_data)
TEEC_CloseSession() -> ioctl(session->ctx->fd, TEE_IOC_CLOSE_SESSION, &arg)
TEEC_InvokeCommand() -> ioctl(session->ctx->fd, TEE_IOC_INVOKE, &buf_data)

可见TEE_IOC_xxx这些ioctl命令定义了CA希望通过ioctl让TA实现的操作,其定义在optee_client/libteec/include/linux/tee.h中(tab:ioctl_cmd)。那么这些命令在linux kernel中是如何进行处理的呢?

从以下代码中我们可以看到,tee_core.c中定义了tee的file_operations结构体类型变量tee_fops,其中.unlocked_ioctl和.compat_ioctl方法都指向tee_ioctl()函数。(具体的ioctl系统调用流程不在本文讨论的范围内,留待以后进一步分析,参阅 https://zhuanlan.zhihu.com/p/267353577 )

tee_ioctl()函数中,根据用户空间传入的cmd进行相应的处理。以TEE_IOC_VERSION为例,tee_ioctl_version()会被调用。而该函数则会去调用tee_driver_ops结构体类型变量的.get_version函数optee_get_version(),最终获取版本相关信息。

标签:OPTEE,TEE,CA,tee,TEEC,ioctl,IOC,TA
From: https://www.cnblogs.com/hoedigger/p/18150088

相关文章

  • 很强!4.7k star,推荐一款Python工具,可实现自动化操作!!
    1、介绍在日常工作中,肯定会遇到一些重复性的工作,不管是点击某个按钮、写东西,打印东西,还是复制粘贴拷贝资料之类的,需要进行大量的重复操作。按键精灵大家都听说过,传统的方式,大家可以使用按键精灵将操作录制一遍,形成脚本,剩余的工作让计算机自动循环执行,应对这些重复性的任务。但今......
  • vue 商品sku,笛卡尔算法,商品添加。动态生成table,table添加值后 再生成的table 不改变t
     <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>快速入门</title><!--引入组件库--><linkrel="stylesheet"href="https://un......
  • row cache lock 事后分析处理
    现场同事告知oracle19C下生产大量trc文件,把oracle目录撑爆查看trc文件如下kqrpre:keymismatchpo=0x132745948hash=27d744ca----------------------------------------SO:0x12a9d2098,type:rowcacheenqueues(111),map:0x17537fa88state:LIVE(0x4532),fl......
  • 一个可以取代caxa cad软件的cad内核
    一个可以替代caxacad软件的cad内核。(1))支持常用的直线,圆弧,圆等绘制(2)支持裁剪,延伸等编辑操作(3)支持任意格式的dxf文件;(4)操作简单 ......
  • web server apache tomcat11-14-CGI
    前言整理这个官方翻译的系列,原因是网上大部分的tomcat版本比较旧,此版本为v11最新的版本。开源项目从零手写实现tomcatminicat别称【嗅虎】心有猛虎,轻嗅蔷薇。系列文章webserverapachetomcat11-01-官方文档入门介绍webserverapachetomcat11-02-setup启动web......
  • 上架即封神!3.6k Star 的开源游戏模拟器,Delta 冲上 App Store 免费榜
    一直以来,苹果设备的应用商店(AppStore)都是禁止游戏模拟器上架,所以iPhone/iPad用户不能直接安装GBA、红白机之类的模拟器应用,这也让想在iPhone上重温童年游戏机的机友们,十分羡慕Android用户。现在,iPhone/iPad用户终于可以光明正大地在国服「AppStore」下载游戏机模拟器......
  • PTA题目集1~3的总结性Blog
    第一次:难度:类内方法不复杂,只有3种信息输入,且有类设计的提示。相对简单。题量:需要1~2天知识点:类设计,字符串处理等基础语法,正则表达式。————————————————————————设计与分析——————————————————————————————————类设......
  • Spark SQL 抽样函数 ——TABLESAMPLE 的坑点
    最近需要实现一段SparkSQL逻辑,对数据集进行抽样指定的行数。由于数据集较大,刚开始的逻辑是,取窗口函数随机排序后row_number的前n行。但运行速度较慢,所以想起了TABLESAMLE函数,支持直接取Rows,尝试后发现速度特别快,基本上几秒内就完成对亿级数据的采样。所以好奇就去查......
  • datawhale-动手学图深度学习task04
    动手学图深度学习图表示学习研究在嵌入空间(EmbeddingSpace,指在高维数据被映射到低维空间的数学结构)表示图的方法,在图上表示学习核嵌入指的是同一件事,“嵌入”是指将网络中的每个节点映射到低维空间(需要深入了解节点的相似性和网络结构),旨在捕捉图结构中的拓扑信息、节点内容信......
  • 对于前三次的pta题集练习,由于我的偷懒和迟钝,有许多部分没有完成,但在此我还是对题目集
    第一道大题题目信息7-1答题判题程序-1分数50作者蔡轲单位南昌航空大学设计实现答题程序,模拟一个小型的测试,要求输入题目信息和答题信息,根据输入题目信息中的标准答案判断答题的结果。输入格式:程序输入信息分三部分:1、题目数量格式:整数数值,若超过1位最高位不能为0,......