6个版本

0.3.3 2021年8月18日
0.3.2 2021年8月4日
0.3.0 2021年1月29日
0.2.0 2021年1月26日
0.1.0 2021年1月24日

#389操作系统

Download history 23/week @ 2024-03-11 14/week @ 2024-03-18 16/week @ 2024-03-25 28/week @ 2024-04-01 13/week @ 2024-04-08 23/week @ 2024-04-15 27/week @ 2024-04-22 9/week @ 2024-04-29 8/week @ 2024-05-06 13/week @ 2024-05-13 15/week @ 2024-05-20 14/week @ 2024-05-27 15/week @ 2024-06-03 15/week @ 2024-06-10 7/week @ 2024-06-17 13/week @ 2024-06-24

51 每月下载量
用于 xhci

MIT/Apache

24KB
436

accessor

GitHub Actions Crates.io Crates.io docs.rs

访问物理内存的访问器。

该crate提供了访问特定内存地址的值。当创建访问器时,物理内存被映射到虚拟内存。访问器的方 法可以访问指定的物理地址。一旦访问器被丢弃,映射的内存将被取消映射。

该crate旨在访问内存映射I/O。读取和写入都是挥发性的。

访问的类型必须实现 Copy,因为读取和写入值需要复制它。

该crate与 #[no_std] 兼容。

use accessor::array;
use accessor::mapper::Mapper;
use accessor::single;
use core::num::NonZeroUsize;

struct M;
impl Mapper for M {
    unsafe fn map(&mut self, phys_start: usize, bytes: usize) -> NonZeroUsize {
        todo!()
    }

    fn unmap(&mut self, phys_start: usize, bytes: usize) {
        todo!()
    }
}

// Create an accessor to an i32 value at the physical address 0x1000.
let mut a = unsafe { single::ReadWrite::<i32, M>::new(0x1000, M) };

// Read a value.
a.read_volatile();

// Write a value.
a.write_volatile(3);

// Create an accessor to an array at the physical address 0x2000 of the type i32 that has 5 elements.
let mut arr = unsafe { array::ReadWrite::<i32, M>::new(0x2000, 5, M) };

// Read the 2nd element.
arr.read_volatile_at(2);

// Write 42 as the 0th element.
arr.write_volatile_at(0, 42);

许可证

许可协议为以下之一

任选其一。

贡献

除非你明确声明,否则根据Apache-2.0许可证定义的,你提交给作品并有意包含在内的任何贡献,将根据上述方式双重许可,不附加任何额外的条款或条件。

无运行时依赖