7个不稳定版本
0.3.0-rc1 | 2024年6月16日 |
---|---|
0.2.0 | 2022年4月2日 |
0.1.3 | 2021年8月23日 |
0.0.0 | 2021年3月3日 |
#81 in 操作系统
2,597 每月下载量
395KB
2K SLoC
这个包提供了一种安全的纯Rust实现,用于在S模式软件中(如操作系统内核)使用RISC-V监督二进制接口(SBI)。此包实现了SBI规范的v2.0-rc5版本,并旨在随着规范新版本的发布而保持更新。
重要安全提示
由于此包旨在由S模式软件使用,因此假设您是在S模式下,在M模式下运行符合规范的SBI实现(或者在VS模式下是S模式)的S模式下执行提供的函数,并考虑将执行范围之外的任何其他操作模式,这可能会在这些环境中引起内存安全问题。使用此包时,请将其视为隐含协议。
SBI扩展支持
扩展实现状态图例
✅ - 已完全实现
🚧 - 部分实现
❌ - 未实现
标准SBI扩展
SBI扩展实现状态
遗产 ✅
函数 | 扩展ID | 实现 |
---|---|---|
设置定时器 | 0 | ✅ |
控制台putchar | 1 | ✅ |
控制台getchar | 2 | ✅ |
清除IPI | 3 | ✅ |
发送IPI | 4 | ✅ |
远程 FENCE.I |
5 | ✅ |
远程 SFENCE.VMA |
6 | ✅ |
带有ASID的远程 SFENCE.VMA |
7 | ✅ |
关机 | 8 | ✅ |
基础 ✅
函数 | 函数ID | 实现 |
---|---|---|
获取SBI规范版本 | 0 | ✅ |
获取SBI实现ID | 1 | ✅ |
获取SBI实现版本 | 2 | ✅ |
探测SBI扩展 | 3 | ✅ |
获取机器厂商ID | 4 | ✅ |
获取机器架构ID | 5 | ✅ |
获取机器实现ID | 6 | ✅ |
定时器 ✅
函数 | 函数ID | 实现 |
---|---|---|
设置定时器 | 0 | ✅ |
处理器间中断(IPI) ✅
函数 | 函数ID | 实现 |
---|---|---|
发送IPI | 0 | ✅ |
RFENCE ✅
函数 | 函数ID | 实现 |
---|---|---|
远程 FENCE.I |
0 | ✅ |
远程 SFENCE.VMA |
1 | ✅ |
带有ASID的远程 SFENCE.VMA |
2 | ✅ |
带有VMID的远程 HFENCE.GVMA |
3 | ✅ |
远程 HFENCE.GVMA |
4 | ✅ |
带有ASID的远程 HFENCE.VVMA |
5 | ✅ |
远程 HFENCE.VVMA |
6 | ✅ |
Hart状态管理 ✅
函数 | 函数ID | 实现 |
---|---|---|
Hart启动 | 0 | ✅ |
Hart停止 | 1 | ✅ |
获取hart状态 | 2 | ✅ |
Hart挂起 | 3 | ✅ |
系统复位 ✅
函数 | 函数ID | 实现 |
---|---|---|
系统复位 | 0 | ✅ |
性能监控单元 ✅
函数 | 函数ID | 实现 |
---|---|---|
获取计数器数量 | 0 | ✅ |
获取计数器信息 | 1 | ✅ |
配置匹配计数器 | 2 | ✅ |
启动计数器 | 3 | ✅ |
停止计数器 | 4 | ✅ |
读取固件计数器 | 5 | ✅ |
调试控制台 ✅
函数 | 函数ID | 实现 |
---|---|---|
控制台写入 | 0 | ✅ |
控制台读取 | 1 | ✅ |
控制台写入字节 | 2 | ✅ |
系统挂起 ✅
函数 | 函数ID | 实现 |
---|---|---|
系统挂起 | 0 | ✅ |
协作处理器性能控制 ✅
函数 | 函数ID | 实现 |
---|---|---|
探测CPPC寄存器 | 0 | ✅ |
读取CPPC寄存器 | 1 | ✅ |
读取CPPC寄存器高位 | 2 | ✅ |
写入CPPC寄存器 | 3 | ✅ |
嵌套加速扩展 ❌
函数 | 函数ID | 实现 |
---|---|---|
探测嵌套加速功能 | 0 | ❌ |
设置嵌套加速共享内存 | 1 | ❌ |
同步共享内存CSRs | 2 | ❌ |
同步共享内存HFENCEs | 3 | ❌ |
同步共享内存并模拟SRET | 4 | ❌ |
偷取时间会计 ❌
函数 | 函数ID | 实现 |
---|---|---|
设置偷取时间共享内存地址 | 0 | ❌ |
实验性、供应商特定和固件特定扩展
实验性、供应商特定和固件特定的SBI扩展作为可选crate功能提供。
目前支持的非标准SBI扩展是
实验性
目前没有支持的实验性SBI扩展。
供应商特定
目前没有支持的供应商特定SBI扩展。
固件特定
目前没有支持的固件特定SBI扩展。
许可
sbi
使用Mozilla公共许可证2.0授权