ECALL的Swtich模式和Switchless模式【源码分析】

Linux SGX仓库:https://github.com/intel/linux-sgx

如下是我的分析。

根据ECALL的真正执行者是谁,可以将ECALL执行模式分为Switch模式(线程切换上下文进入Enclave执行代码)和Switchless模式(不可信线程将ECALL交由长期驻留Enclave的线程代理执行)。

ECALL Switch模式调用

如下图所示,不可信线程切换上下文进入Enclave完成ECALL代码的真正执行。

ECALL的Swtich模式和Switchless模式【源码分析】

ECALL Switchless模式调用

如下图所示,不可信线程会将Ecall任务放到Ecall任务池中,发信号通知TWorker线程提取任务并执行。

ECALL的Swtich模式和Switchless模式【源码分析】