学完了内存缓存、系统调用、下面是关于进程的,是不是感觉就是在学习一个操作系统。进程、中断、内存。
这里就到了进程的学习。主要有线程的管理和IPC管理两个大的方面,可能会整个三四篇才能学习完。
下面一起开始学习吧。
当TA被调用时,OP-TEE都会使用一个线程空间来运行执行流程,待调用完成后,该线程的状态将会被重置,以备后续被再次调用。
本章将详细介绍OP-TEE中线程管理的相关内容。
OP-TEE中的每一个线程作为一个任务的运行载体。
OP-TEE中定义了一个线程的数组,线程数组中的每一个元素都表示一个单独的线程空间。该数组定义在optee_os/core/arch/arm/kernel/thread.c文件中,其内容如下:
struct thread_ctx threads[CFG_NUM_THREADS];
OP-TEE中并没有线程的创建一说,可通过修改CFG_NUM_THREADS来控制OP-TEE中支持的线程的最大个数。
当CA端触发了安全监控模式调用(smc)时,OP-TEE会从该数组中找寻到可用的线程元素作为一个任务。
如果REE侧触发的安全监控模式调用(smc)是由RPC引起的,OP-TEE会直接使用参数中的线程ID值找到对应的线程上下文