ECALL的Swtich模式和Switchless模式【源码分析】
Linux SGX仓库:https://github.com/intel/linux-sgx
如下是我的分析。
根据ECALL的真正执行者是谁,可以将ECALL执行模式分为Switch模式(线程切换上下文进入Enclave执行代码)和Switchless模式(不可信线程将ECALL交由长期驻留Enclave的线程代理执行)。
ECALL Switch模式调用
如下图所示,不可信线程切换上下文进入Enclave完成ECALL代码的真正执行。
ECALL Switchless模式调用
如下图所示,不可信线程会将Ecall任务放到Ecall任务池中,发信号通知TWorker线程提取任务并执行。