TEE driver 架构之美 -- Linux Kernel 实现赏析

先来看一幅图

这里写图片描述

好,看上层是怎么与该list交互的,

1 : 是谁把请求放上去,又是谁把请求取出来,
2 : 什么时机做上述操作的
3 : 为什么要这样做 , 有没有更好的办法 ?

/*
    该函数做了一下事情 :

*/
static bool process_one_request(struct thread_arg *arg)
{
    /*
        在该函数中携带请求时参数的数量(5个)通过ioctl()传入到kernel中,被拷贝到可变大小缓冲区
        tee_ioctl_supp_recv()
        {
            copy_from_user(&buf, ubuf, sizeof(buf))
            ....
        }
    */
    union tee_rpc_invoke request;
}

这里写图片描述

1 : 打开一个session,到底是打开了什么 ?
这里会涉及到一个“ 软死锁”的 classic big bug,watchdog 终于天狗吃到了月亮了, Kernel能扛多长时间 ?
先看一下它的 Process

这里写图片描述

猜你喜欢

转载自blog.csdn.net/leesagacious/article/details/80548735