Skip to content

超级调用参考 ​

RVM 使用准虚拟化技术来减小运行时间消耗和内存消耗,提供一系列超级调用 (hypercall)来提供敏感的特权级操作:控制台输出、虚拟中断控制、虚拟 中断映射、事件通道、休眠与看门狗管理。

超级调用调用号功能描述
RVM_HYP_SPURIOUS0伪超级调用,忽略(定时器中断先于请求抵达时产生)
RVM_HYP_PUTCHAR1打印一个字符到控制台
RVM_HYP_REBOOT2重启当前虚拟机
RVM_HYP_INT_ENA3开启虚拟机中断
RVM_HYP_INT_DIS4关闭虚拟机中断
RVM_HYP_VCT_PHYS5将虚拟机虚拟中断与物理中断映射登记
RVM_HYP_VCT_EVT6将虚拟机虚拟中断与事件通道映射登记
RVM_HYP_VCT_DEL7删除一个虚拟中断映射
RVM_HYP_VCT_LCK8锁定虚拟机中断映射表
RVM_HYP_VCT_WAIT9休眠虚拟机直至中断到来
RVM_HYP_EVT_ADD10为虚拟机增加一个事件源的发送能力
RVM_HYP_EVT_DEL11删除虚拟机对一个事件源的发送能力
RVM_HYP_EVT_SND12向一个事件通道发送事件
RVM_HYP_WDG_CLR13启动并喂看门狗

说明 ​

  • 虚拟屏蔽与物理屏蔽。 CPSID/BASEPRI 只屏蔽物理中断,对虚拟中断 送达没有任何作用。客机必须使用 RVM_HYP_INT_ENA/RVM_HYP_INT_DIS (或其 C 封装 RVM_Virt_Int_Unmask()/RVM_Virt_Int_Mask())控制虚拟 中断的送达。
  • 空闲停车。 用户手册(§4.4.3)要求客机空闲线程反复调用 RVM_HYP_VCT_WAIT(超级调用 9):它挂起用户线程并将其移出运行队列, 直到下一个虚拟中断到来——这就是阻止空闲客机空转烧 CPU 的机制。该调用 是透明挂起——在调用点恢复、不改内核状态、也绝不在 RTOS 意义上阻塞。 各客机通过自己的官方空闲钩子接入(vApplicationIdleHook、 OS_AppIdleTaskHookPtr、rt_thread_idle_sethook、djy_set_idle_hook、 klt_set_idle_hook)。
  • 事件通道。 超级调用 5/6/10/11/12 构成虚拟机间通信机制:虚拟中断 映射到事件通道,发送能力按虚拟机授予——通信设计详见 用户手册。

本软件是 EDI 的官方作品,属于公有领域。