Refactor: wrap RwLock<AddrSpace>.
This commit is contained in:
@@ -52,7 +52,7 @@ pub fn virttophys(virtual_address: usize) -> Result<usize> {
|
||||
enforce_root()?;
|
||||
|
||||
let addr_space = Arc::clone(context::current()?.read().addr_space()?);
|
||||
let addr_space = addr_space.read();
|
||||
let addr_space = addr_space.inner.read();
|
||||
|
||||
match addr_space
|
||||
.table
|
||||
|
||||
+2
-2
@@ -433,7 +433,7 @@ pub fn funmap(virtual_address: usize, length: usize) -> Result<usize> {
|
||||
let span = PageSpan::validate_nonempty(VirtualAddress::new(virtual_address), length_aligned)
|
||||
.ok_or(Error::new(EINVAL))?;
|
||||
let unpin = false;
|
||||
let notify = addr_space.write().munmap(span, unpin)?;
|
||||
let notify = addr_space.inner.write().munmap(span, unpin)?;
|
||||
|
||||
for map in notify {
|
||||
let _ = map.unmap();
|
||||
@@ -480,7 +480,7 @@ pub fn mremap(
|
||||
let new_page_count = new_size.div_ceil(PAGE_SIZE);
|
||||
let requested_dst_base = Some(new_base).filter(|_| new_address != 0);
|
||||
|
||||
let mut guard = addr_space.write();
|
||||
let mut guard = addr_space.inner.write();
|
||||
|
||||
let base = AddrSpace::r#move(
|
||||
&mut *guard,
|
||||
|
||||
@@ -53,7 +53,7 @@ pub fn futex(addr: usize, op: usize, val: usize, val2: usize, addr2: usize) -> R
|
||||
|
||||
// Keep the address space locked so we can safely read from the physical address. Unlock it
|
||||
// before context switching.
|
||||
let addr_space_guard = addr_space_lock.read();
|
||||
let addr_space_guard = addr_space_lock.inner.read();
|
||||
|
||||
let target_physaddr =
|
||||
validate_and_translate_virt(&*addr_space_guard, VirtualAddress::new(addr))
|
||||
|
||||
@@ -261,6 +261,7 @@ pub fn mprotect(address: usize, size: usize, flags: MapFlags) -> Result<usize> {
|
||||
.ok_or(Error::new(EINVAL))?;
|
||||
|
||||
AddrSpace::current()?
|
||||
.inner
|
||||
.write()
|
||||
.mprotect(span, flags)
|
||||
.map(|()| 0)
|
||||
@@ -590,7 +591,7 @@ pub unsafe fn usermode_bootstrap(bootstrap: &Bootstrap) -> ! {
|
||||
let page_count = NonZeroUsize::new(bootstrap.page_count)
|
||||
.expect("bootstrap contained no pages!");
|
||||
|
||||
let _base_page = addr_space.write().mmap(Some(base), page_count, flags, &mut Vec::new(), |page, flags, mapper, flusher| {
|
||||
let _base_page = addr_space.inner.write().mmap(Some(base), page_count, flags, &mut Vec::new(), |page, flags, mapper, flusher| {
|
||||
let shared = false;
|
||||
Ok(Grant::zeroed(PageSpan::new(page, bootstrap.page_count), flags, mapper, flusher, shared)?)
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user