OP-TEE驱动与OP-TEE之间共享内存的注册和分配,当libteec库和tee_supplicant需要分配或注册与安全世界状态之间的共享内存时,可通过调用OP-TEE驱动的ioctl方法来实现,ioctl函数将调用tee_ioctl_shm_alloc函数来实现具体的共享内存的分配、注册共享内存的操作。
该函数的内容如下:
static int tee_ioctl_shm_alloc(struct tee_context *ctx,
struct tee_ioctl_shm_alloc_data __user *udata)
{
long ret;
struct tee_ioctl_shm_alloc_data data;
struct tee_shm *shm;
/* 将userspace传递的参数数据复制到kernel的buffer中 */
if (copy_from_user(&data, udata, sizeof(data)))
return -EFAULT;
if (data.flags)
return -EINVAL;
/* 将共享内存的ID值设置成-1,以便分配好共享内存之后重新赋值 */
data.id = -1;
/* 调用tee_shm_all函数,从驱动与secure world之间的共享内存池中分配对应大小的内存,并
设定对应的ID值 */
shm = tee_shm_alloc(ctx, data.size, TEE_SHM_MAP