aboutsummaryrefslogtreecommitdiff
path: root/src/mock.rs
diff options
context:
space:
mode:
authorJeff Vander Stoep <jeffv@google.com>2024-02-06 10:00:06 +0100
committerJeff Vander Stoep <jeffv@google.com>2024-02-06 10:00:07 +0100
commit5f6d8f6f393df674d5056410c14794388efcb301 (patch)
tree67534458d5ef8dd2a6dccc10a0d1c328afaed423 /src/mock.rs
parentc74102c404fdf382693b76eed6ad2101672e7967 (diff)
downloadvirtio-queue-5f6d8f6f393df674d5056410c14794388efcb301.tar.gz
Upgrade virtio-queue to 0.11.0
This project was upgraded with external_updater. Usage: tools/external_updater/updater.sh update external/rust/crates/virtio-queue For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md Test: TreeHugger Change-Id: I8ba377033143d7b79f80ce85ffa9f960450db1a0
Diffstat (limited to 'src/mock.rs')
-rw-r--r--src/mock.rs15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/mock.rs b/src/mock.rs
index d026f80..1f43588 100644
--- a/src/mock.rs
+++ b/src/mock.rs
@@ -7,7 +7,9 @@
use std::marker::PhantomData;
use std::mem::size_of;
-use vm_memory::{Address, ByteValued, Bytes, GuestAddress, GuestMemory, GuestUsize};
+use vm_memory::{
+ Address, ByteValued, Bytes, GuestAddress, GuestMemory, GuestMemoryError, GuestUsize,
+};
use crate::defs::{VIRTQ_AVAIL_ELEMENT_SIZE, VIRTQ_AVAIL_RING_HEADER_SIZE};
use crate::{Descriptor, DescriptorChain, Error, Queue, QueueOwnedT, QueueT, VirtqUsedElem};
@@ -23,6 +25,8 @@ pub enum MockError {
InvalidIndex,
/// Invalid next avail
InvalidNextAvail,
+ /// Guest memory errors
+ GuestMem(GuestMemoryError),
}
impl Display for MockError {
@@ -39,6 +43,7 @@ impl Display for MockError {
f,
"invalid next available descriptor chain head in the queue"
),
+ GuestMem(e) => write!(f, "guest memory error: {}", e),
}
}
}
@@ -425,7 +430,7 @@ impl<'a, M: GuestMemory> MockSplitQueue<'a, M> {
self.create_queue::<Queue>()
.map_err(MockError::InvalidQueueParams)?
.iter(self.mem)
- .unwrap()
+ .map_err(MockError::InvalidQueueParams)?
.next()
.ok_or(MockError::InvalidNextAvail)
}
@@ -466,7 +471,7 @@ impl<'a, M: GuestMemory> MockSplitQueue<'a, M> {
.mem
.read_obj::<u16>(self.avail_addr().unchecked_add(2))
.map(u16::from_le)
- .unwrap();
+ .map_err(MockError::GuestMem)?;
for (idx, desc) in descs.iter().enumerate() {
let i = idx as u16 + offset;
@@ -482,7 +487,7 @@ impl<'a, M: GuestMemory> MockSplitQueue<'a, M> {
+ (avail_idx + new_entries) as u64 * VIRTQ_AVAIL_ELEMENT_SIZE,
),
)
- .unwrap();
+ .map_err(MockError::GuestMem)?;
new_entries += 1;
}
}
@@ -493,7 +498,7 @@ impl<'a, M: GuestMemory> MockSplitQueue<'a, M> {
u16::to_le(avail_idx + new_entries),
self.avail_addr().unchecked_add(2),
)
- .unwrap();
+ .map_err(MockError::GuestMem)?;
Ok(())
}