Update Red Bear driver substrate

Red Bear OS Team
This commit is contained in:
2026-04-16 12:43:10 +01:00
parent 6259dc06da
commit 6c418bb03b
23 changed files with 982 additions and 169 deletions
@@ -1,6 +1,7 @@
use core::ptr;
use core::sync::atomic::{AtomicPtr, Ordering};
use redox_syscall::data::Map;
use redox_syscall::flag::{
MAP_SHARED, O_CLOEXEC, O_RDONLY, O_RDWR, O_WRONLY, PROT_READ, PROT_WRITE,
};
@@ -110,20 +111,19 @@ impl MmioRegion {
let root_fd = ensure_memory_root()?;
let mem_fd = root_fd.openat(&path, (O_CLOEXEC | mode) as i32, 0)?;
let ptr = unsafe {
libredox::call::mmap(libredox::call::MmapArgs {
fd: mem_fd.raw(),
offset: phys_addr,
length: aligned_size,
flags: MAP_SHARED.bits() as u32,
prot: mmap_prot.bits() as u32,
addr: ptr::null_mut(),
})
}
.map_err(|e| DriverError::MappingFailed {
phys: phys_addr,
size,
reason: format!("{e:?}"),
let map = Map {
offset: phys_addr as usize,
size: aligned_size,
flags: mmap_prot | redox_syscall::MapFlags::from_bits_truncate(MAP_SHARED.bits()),
address: 0,
};
let ptr = unsafe { redox_syscall::call::fmap(mem_fd.raw(), &map) }.map_err(|e| {
DriverError::MappingFailed {
phys: phys_addr,
size,
reason: format!("{e:?}"),
}
})?;
Ok(Self {