Skip to content

Commit e29eca8

Browse files
committed
refactor: impl Read for UhyveFileHandleInner
1 parent a6efad1 commit e29eca8

File tree

1 file changed

+19
-17
lines changed

1 file changed

+19
-17
lines changed

src/fs/uhyve.rs

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use alloc::vec::Vec;
66

77
use async_lock::Mutex;
88
use async_trait::async_trait;
9-
use embedded_io::{ErrorType, Write};
9+
use embedded_io::{ErrorType, Read, Write};
1010
use memory_addresses::VirtAddr;
1111
use uhyve_interface::parameters::{
1212
CloseParams, LseekParams, OpenParams, ReadParams, UnlinkParams, WriteParams,
@@ -30,22 +30,6 @@ impl UhyveFileHandleInner {
3030
Self(fd)
3131
}
3232

33-
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
34-
let mut read_params = ReadParams {
35-
fd: self.0,
36-
buf: GuestVirtAddr::new(buf.as_mut_ptr() as u64),
37-
len: buf.len(),
38-
ret: 0,
39-
};
40-
uhyve_hypercall(Hypercall::FileRead(&mut read_params));
41-
42-
if read_params.ret >= 0 {
43-
Ok(read_params.ret.try_into().unwrap())
44-
} else {
45-
Err(Errno::Io)
46-
}
47-
}
48-
4933
fn lseek(&self, offset: isize, whence: SeekWhence) -> io::Result<isize> {
5034
let mut lseek_params = LseekParams {
5135
fd: self.0,
@@ -66,6 +50,24 @@ impl ErrorType for UhyveFileHandleInner {
6650
type Error = Errno;
6751
}
6852

53+
impl Read for UhyveFileHandleInner {
54+
fn read(&mut self, buf: &mut [u8]) -> Result<usize, Self::Error> {
55+
let mut read_params = ReadParams {
56+
fd: self.0,
57+
buf: GuestVirtAddr::new(buf.as_mut_ptr() as u64),
58+
len: buf.len(),
59+
ret: 0,
60+
};
61+
uhyve_hypercall(Hypercall::FileRead(&mut read_params));
62+
63+
if read_params.ret >= 0 {
64+
Ok(read_params.ret.try_into().unwrap())
65+
} else {
66+
Err(Errno::Io)
67+
}
68+
}
69+
}
70+
6971
impl Write for UhyveFileHandleInner {
7072
fn write(&mut self, buf: &[u8]) -> Result<usize, Self::Error> {
7173
let write_params = WriteParams {

0 commit comments

Comments
 (0)