12个版本 (6个重大更改)
使用旧的Rust 2015
0.8.0 | 2022年4月25日 |
---|---|
0.7.0 | 2021年3月11日 |
0.6.0 | 2020年11月25日 |
0.4.0 |
|
0.0.3 | 2015年3月19日 |
#197 在 操作系统
3,562 每月下载量
在 3 crates 中使用
47KB
904 行
Multiboot
这是一个完全用Rust编写的多引导(v1)库。代码只依赖于libcore。
如何使用
extern crate core;
use multiboot::information::{MemoryManagement, Multiboot, PAddr};
use core::{slice, mem};
struct Mem;
impl MemoryManagement for Mem {
unsafe fn paddr_to_slice(&self, addr: PAddr, size: usize) -> Option<&'static [u8]> {
let ptr = mem::transmute(addr);
Some(slice::from_raw_parts(ptr, size))
}
// If you only want to read fields, you can simply return `None`.
unsafe fn allocate(&mut self, _length: usize) -> Option<(PAddr, &mut [u8])> {
None
}
unsafe fn deallocate(&mut self, addr: PAddr) {
if addr != 0 {
unimplemented!()
}
}
}
static mut MEM: Mem = Mem;
/// mboot_ptr is the initial pointer to the multiboot structure
/// provided in %ebx on start-up.
pub fn use_multiboot(mboot_ptr: PAddr) -> Option<Multiboot<'static, 'static>> {
unsafe {
Multiboot::from_ptr(mboot_ptr, &mut MEM)
}
}
功能尚未完成,欢迎提交补丁!