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 2018年7月14日
0.0.3 2015年3月19日

#197操作系统

Download history 831/week @ 2024-04-20 525/week @ 2024-04-27 863/week @ 2024-05-04 918/week @ 2024-05-11 1052/week @ 2024-05-18 762/week @ 2024-05-25 1076/week @ 2024-06-01 816/week @ 2024-06-08 955/week @ 2024-06-15 630/week @ 2024-06-22 737/week @ 2024-06-29 504/week @ 2024-07-06 808/week @ 2024-07-13 957/week @ 2024-07-20 935/week @ 2024-07-27 773/week @ 2024-08-03

3,562 每月下载量
3 crates 中使用

MIT 许可证

47KB
904

Multiboot Crates.io 构建

这是一个完全用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)
    }
}

功能尚未完成,欢迎提交补丁!

文档

依赖关系