Use rmm::PhysicalAddress and rmm::VirtualAddress directly

This commit is contained in:
Jeremy Soller
2021-01-09 21:16:11 -07:00
parent ccddabadf7
commit 334584b3d5
19 changed files with 98 additions and 124 deletions
+2 -2
View File
@@ -52,7 +52,7 @@ impl Scheme for MemoryScheme {
for page in region.pages() {
if active_table.translate_page(page).is_some() {
println!("page at {:#x} was already mapped", page.start_address().get());
println!("page at {:#x} was already mapped", page.start_address().data());
return Err(Error::new(EEXIST))
}
}
@@ -60,7 +60,7 @@ impl Scheme for MemoryScheme {
grants.insert(Grant::map(region.start_address(), region.size(), entry_flags(map.flags)));
Ok(region.start_address().get())
Ok(region.start_address().data())
}
}
fn fmap_old(&self, id: usize, map: &OldMap) -> Result<usize> {
+3 -3
View File
@@ -324,7 +324,7 @@ impl Scheme for ProcScheme {
let handle = handles.get_mut(&id).ok_or(Error::new(EBADF))?;
let mut memory = handle.data.mem_data().ok_or(Error::new(EBADF))?;
let value = calc_seek_offset_usize(memory.offset.get(), pos, whence, isize::max_value() as usize)?;
let value = calc_seek_offset_usize(memory.offset.data(), pos, whence, isize::max_value() as usize)?;
memory.offset = VirtualAddress::new(value as usize);
Ok(value)
}
@@ -363,7 +363,7 @@ impl Scheme for ProcScheme {
Ok(())
})?;
data.offset = VirtualAddress::new(data.offset.get() + buf.len());
data.offset = VirtualAddress::new(data.offset.data() + buf.len());
Ok(buf.len())
},
Operation::Regs(kind) => {
@@ -475,7 +475,7 @@ impl Scheme for ProcScheme {
Ok(())
})?;
data.offset = VirtualAddress::new(data.offset.get() + buf.len());
data.offset = VirtualAddress::new(data.offset.data() + buf.len());
Ok(buf.len())
},
Operation::Regs(kind) => match kind {
+6 -6
View File
@@ -103,13 +103,13 @@ impl UserInner {
/// Map a readable structure to the scheme's userspace and return the
/// pointer
pub fn capture(&self, buf: &[u8]) -> Result<usize> {
UserInner::capture_inner(&self.context, 0, buf.as_ptr() as usize, buf.len(), PROT_READ, None).map(|addr| addr.get())
UserInner::capture_inner(&self.context, 0, buf.as_ptr() as usize, buf.len(), PROT_READ, None).map(|addr| addr.data())
}
/// Map a writeable structure to the scheme's userspace and return the
/// pointer
pub fn capture_mut(&self, buf: &mut [u8]) -> Result<usize> {
UserInner::capture_inner(&self.context, 0, buf.as_mut_ptr() as usize, buf.len(), PROT_WRITE, None).map(|addr| addr.get())
UserInner::capture_inner(&self.context, 0, buf.as_mut_ptr() as usize, buf.len(), PROT_WRITE, None).map(|addr| addr.data())
}
fn capture_inner(context_weak: &Weak<RwLock<Context>>, to_address: usize, address: usize, size: usize, flags: MapFlags, desc_opt: Option<FileDescriptor>)
@@ -144,7 +144,7 @@ impl UserInner {
&mut temporary_page
));
Ok(VirtualAddress::new(to_region.start_address().get() + offset))
Ok(VirtualAddress::new(to_region.start_address().data() + offset))
}
pub fn release(&self, address: usize) -> Result<()> {
@@ -222,7 +222,7 @@ impl UserInner {
if let Ok(grant_address) = res {
self.funmap.lock().insert(Region::new(grant_address, map.size), VirtualAddress::new(address));
}
packet.a = Error::mux(res.map(|addr| addr.get()));
packet.a = Error::mux(res.map(|addr| addr.data()));
} else {
let _ = desc.close();
}
@@ -454,7 +454,7 @@ impl Scheme for UserScheme {
}
funmap.remove(&grant);
let user = Region::new(user_base, grant.size());
Some(grant.rebase(user, grant_address).get())
Some(grant.rebase(user, grant_address).data())
} else {
None
}
@@ -492,7 +492,7 @@ impl Scheme for UserScheme {
funmap.insert(after, start);
}
Some(grant.rebase(user, grant_address).get())
Some(grant.rebase(user, grant_address).data())
} else {
None
}