跳转至

drvbox

drvbox 提供驱动空间(driver box)与用户空间(usr box)之间的执行区域切换功能,支持修改对应的 PMP (Physical Memory Protection)/MPU (Memory Protection Unit) 配置,实现驱动隔离机制下的安全域切换。

头文件清单

#include "include/osal/drvbox/osal_drvbox.h"

接口清单

接口名称 功能简述
osal_drvmgr_switch_to_drvbox 将执行区域从用户空间切换至驱动空间,并修改对应的PMP/MPU配置
osal_drvmgr_switch_to_usrbox 将执行区域从驱动空间切换回用户空间,并修改对应的PMP/MPU配置

Functions

osal_drvmgr_switch_to_drvbox

unsigned int osal_drvmgr_switch_to_drvbox(unsigned int drv_id)

头文件清单

#include "include/osal/drvbox/osal_drvbox.h"

功能说明

  • 将当前执行区域从用户空间(usr box)切换至驱动空间(driver box),同时修改对应的PMP/MPU配置
  • 通过drv_id参数校验调用者对驱动的访问权限,实现驱动隔离机制下的安全域切换
  • 仅支持在seliteos系统下调用

前置条件

  • 调用时序约束:当前执行上下文位于用户空间(common usr lib),禁止在内核态或驱动空间中调用
  • 上下文限制:仅支持在seliteos系统下调用

入参

名称 参数类型 详细说明 约束取值范围
drv_id unsigned int 已注册的合法驱动标识,用于校验调用者对驱动的访问权限 0 ~ 31

返回值

  • 返回类型:unsigned int
返回值 文字含义 触发场景
LOS_OK(0) 域切换成功 驱动权限校验通过,区域切换成功
DRV_BOX_INVALID_SWITCH(1) 无需执行切换 当前系统状态限制导致无需执行切换流程
DRV_BOX_SWITCH_FAIL(2) 权限被拒绝 驱动访问权限校验未通过

osal_drvmgr_switch_to_usrbox

void osal_drvmgr_switch_to_usrbox(void)

头文件清单

#include "include/osal/drvbox/osal_drvbox.h"

功能说明

  • 将当前执行区域从驱动空间(driver box)切换回用户空间(usr box),同时修改对应的PMP/MPU配置
  • 与osal_drvmgr_switch_to_drvbox配对使用,完成驱动空间操作后的域切换回退
  • 仅支持在seliteos系统下调用

前置条件

  • 调用时序约束:当前执行上下文位于用户空间(common usr lib),且此前已通过osal_drvmgr_switch_to_drvbox成功切换至驱动空间
  • 依赖关系:调用时序上须与osal_drvmgr_switch_to_drvbox成对使用,确保域切换的正确回退

Macros

LOS_OK

#define LOS_OK             0

DRV_BOX_INVALID_SWITCH

#define DRV_BOX_INVALID_SWITCH    1U

DRV_BOX_SWITCH_FAIL

#define DRV_BOX_SWITCH_FAIL       2U