Remove as_user_inner.

This commit is contained in:
4lDO2
2023-11-19 18:01:24 +01:00
parent 3a35338aa7
commit 88508a2cb7
3 changed files with 10 additions and 11 deletions
+8 -2
View File
@@ -16,7 +16,7 @@ use crate::arch::paging::PAGE_SIZE;
use crate::memory::{Enomem, Frame, get_page_info, PageInfo, deallocate_frames, RefKind, AddRefError, RefCount, the_zeroed_frame};
use crate::paging::mapper::{Flusher, InactiveFlusher, PageFlushAll};
use crate::paging::{Page, PageFlags, PageMapper, RmmA, TableKind, VirtualAddress};
use crate::scheme;
use crate::scheme::{self, KernelSchemes};
use super::context::HardBlockedReason;
use super::file::FileDescription;
@@ -1728,7 +1728,13 @@ fn correct_inner<'l>(addr_space_lock: &'l Arc<RwLock<AddrSpace>>, mut addr_space
ref desc => (desc.scheme, desc.number),
};
let user_inner = scheme::schemes()
.get(scheme_id).and_then(|s| s.as_user_inner().transpose().ok().flatten())
.get(scheme_id).and_then(|s| {
if let KernelSchemes::User(user) = s {
user.inner.upgrade()
} else {
None
}
})
.ok_or(PfError::Segv)?;
let offset = file_ref.base_offset as u64 + (pages_from_grant_start * PAGE_SIZE) as u64;
+1 -4
View File
@@ -38,7 +38,7 @@ use self::root::RootScheme;
use self::serio::SerioScheme;
use self::sys::SysScheme;
use self::time::TimeScheme;
use self::user::{UserInner, UserScheme};
use self::user::UserScheme;
/// When compiled with the "acpi" feature - `acpi:` - allows drivers to read a limited set of ACPI tables.
#[cfg(all(feature = "acpi", any(target_arch = "x86", target_arch = "x86_64")))]
@@ -394,9 +394,6 @@ pub trait KernelScheme: Send + Sync + 'static {
fn close(&self, id: usize) -> Result<()> {
Err(Error::new(EBADF))
}
// TODO: This demonstrates why we need to transition away from a dyn trait.
fn as_user_inner(&self) -> Option<Result<Arc<UserInner>>> { None }
}
#[derive(Debug)]
+1 -5
View File
@@ -752,7 +752,7 @@ fn page_range_containing(base: usize, size: usize) -> (Page, usize, usize) {
/// `UserInner` has to be wrapped
#[derive(Clone)]
pub struct UserScheme {
inner: Weak<UserInner>
pub(crate) inner: Weak<UserInner>
}
impl UserScheme {
@@ -986,10 +986,6 @@ impl KernelScheme for UserScheme {
Response::Fd(_) => Err(Error::new(EIO)),
}
}
fn as_user_inner(&self) -> Option<Result<Arc<UserInner>>> {
Some(self.inner.upgrade().ok_or(Error::new(ENODEV)))
}
}
#[derive(PartialEq)]