pub struct DisplayScheme {
handles: RwLock<BTreeMap<u64, Handle>>,
next: AtomicU64,
screens: RwLock<BTreeMap<u32, Arc<RwLock<HeapScreen>>>>,
}Fields§
§handles: RwLock<BTreeMap<u64, Handle>>§next: AtomicU64§screens: RwLock<BTreeMap<u32, Arc<RwLock<HeapScreen>>>>Offscreen buffers keyed by display_id.
Implementations§
Source§impl DisplayScheme
impl DisplayScheme
fn new() -> Self
fn alloc_id(&self) -> u64
Sourcefn get_or_create_screen(&self, display_id: u32) -> Arc<RwLock<HeapScreen>>
fn get_or_create_screen(&self, display_id: u32) -> Arc<RwLock<HeapScreen>>
Get or create the offscreen buffer for a display.
Sourcefn parse_display_path(path: &str) -> Option<u32>
fn parse_display_path(path: &str) -> Option<u32>
Parse “display_id.screen_id” path to global display_id.
Trait Implementations§
Source§impl Scheme for DisplayScheme
impl Scheme for DisplayScheme
Source§fn open(
&self,
path: &str,
_flags: OpenFlags,
) -> Result<OpenResult, SyscallError>
fn open( &self, path: &str, _flags: OpenFlags, ) -> Result<OpenResult, SyscallError>
Open a file/resource at the given path within this scheme. Read more
Source§fn read(
&self,
fid: u64,
offset: u64,
buf: &mut [u8],
) -> Result<usize, SyscallError>
fn read( &self, fid: u64, offset: u64, buf: &mut [u8], ) -> Result<usize, SyscallError>
Read bytes from an open file.
Source§fn write(
&self,
fid: u64,
_offset: u64,
buf: &[u8],
) -> Result<usize, SyscallError>
fn write( &self, fid: u64, _offset: u64, buf: &[u8], ) -> Result<usize, SyscallError>
Write bytes to an open file.
Source§fn readdir(&self, fid: u64) -> Result<Vec<DirEntry>, SyscallError>
fn readdir(&self, fid: u64) -> Result<Vec<DirEntry>, SyscallError>
Read directory entries from an open directory handle.
Source§fn async_read(
&self,
file_id: u64,
offset: u64,
user_buf_vaddr: u64,
len: usize,
_ring_id: u64,
_user_data: u64,
) -> Result<AsyncSubmitResult, SyscallError>
fn async_read( &self, file_id: u64, offset: u64, user_buf_vaddr: u64, len: usize, _ring_id: u64, _user_data: u64, ) -> Result<AsyncSubmitResult, SyscallError>
Submit a read against a userspace buffer for async I/O. Read more
Source§fn async_write(
&self,
file_id: u64,
offset: u64,
user_buf_vaddr: u64,
len: usize,
_ring_id: u64,
_user_data: u64,
) -> Result<AsyncSubmitResult, SyscallError>
fn async_write( &self, file_id: u64, offset: u64, user_buf_vaddr: u64, len: usize, _ring_id: u64, _user_data: u64, ) -> Result<AsyncSubmitResult, SyscallError>
Submit a write sourced from a userspace buffer for async I/O. Read more
Source§fn truncate(&self, file_id: u64, new_size: u64) -> Result<(), SyscallError>
fn truncate(&self, file_id: u64, new_size: u64) -> Result<(), SyscallError>
Truncate/resize a file (if supported).
Source§fn truncate_by_path(
&self,
_path: &str,
_new_size: u64,
) -> Result<(), SyscallError>
fn truncate_by_path( &self, _path: &str, _new_size: u64, ) -> Result<(), SyscallError>
Truncate a file by path (avoids open/close round-trip). Read more
Source§fn sync(&self, file_id: u64) -> Result<(), SyscallError>
fn sync(&self, file_id: u64) -> Result<(), SyscallError>
Sync file to storage (if applicable).
Source§fn create_file(&self, path: &str, mode: u32) -> Result<OpenResult, SyscallError>
fn create_file(&self, path: &str, mode: u32) -> Result<OpenResult, SyscallError>
Create a new regular file.
Source§fn create_directory(
&self,
path: &str,
mode: u32,
) -> Result<OpenResult, SyscallError>
fn create_directory( &self, path: &str, mode: u32, ) -> Result<OpenResult, SyscallError>
Create a new directory.
Source§fn rename(&self, old_path: &str, new_path: &str) -> Result<(), SyscallError>
fn rename(&self, old_path: &str, new_path: &str) -> Result<(), SyscallError>
Rename/move an entry within this scheme.
Source§fn chmod(&self, path: &str, mode: u32) -> Result<(), SyscallError>
fn chmod(&self, path: &str, mode: u32) -> Result<(), SyscallError>
Change permission bits on a path.
Source§fn fchmod(&self, file_id: u64, mode: u32) -> Result<(), SyscallError>
fn fchmod(&self, file_id: u64, mode: u32) -> Result<(), SyscallError>
Change permission bits on an open file handle.
Source§fn link(&self, old_path: &str, new_path: &str) -> Result<(), SyscallError>
fn link(&self, old_path: &str, new_path: &str) -> Result<(), SyscallError>
Create a hard link.
Auto Trait Implementations§
impl !Freeze for DisplayScheme
impl !RefUnwindSafe for DisplayScheme
impl !UnwindSafe for DisplayScheme
impl Send for DisplayScheme
impl Sync for DisplayScheme
impl Unpin for DisplayScheme
impl UnsafeUnpin for DisplayScheme
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more