Skip to content

Commit d8ef45f

Browse files
jiangliuandreeaflorescu
authored andcommitted
queue: add size() to QueueStateT
Add method size() to QueueStateT. Signed-off-by: Liu Jiang <gerry@linux.alibaba.com>
1 parent d4aa66d commit d8ef45f

File tree

4 files changed

+30
-9
lines changed

4 files changed

+30
-9
lines changed

crates/virtio-queue/CHANGELOG.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
# Unreleased
2+
3+
## Added
4+
- QueueStateT::size(): [#153](https://github.com/rust-vmm/vm-virtio/pull/153)
5+
6+
## Removed
7+
- #[derive(Clone)] for QueueState: [#153](https://github.com/rust-vmm/vm-virtio/pull/153)
8+
19
# v0.2.0
210

311
## Added
@@ -13,4 +21,4 @@
1321

1422
# v0.1.0
1523

16-
This is the first release of the crate.
24+
This is the first release of the crate.

crates/virtio-queue/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,9 @@ pub trait QueueStateT: for<'a> QueueStateGuard<'a> {
121121
/// Get the maximum size of the virtio queue.
122122
fn max_size(&self) -> u16;
123123

124+
/// Get the actual size configured by the guest.
125+
fn size(&self) -> u16;
126+
124127
/// Configure the queue size for the virtio queue.
125128
fn set_size(&mut self, size: u16);
126129

crates/virtio-queue/src/state.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,10 @@ impl QueueStateT for QueueState {
242242
self.max_size
243243
}
244244

245+
fn size(&self) -> u16 {
246+
self.size
247+
}
248+
245249
fn set_size(&mut self, size: u16) {
246250
if size > self.max_size() || size == 0 || (size & (size - 1)) != 0 {
247251
error!("virtio queue with invalid size: {}", size);
@@ -427,14 +431,14 @@ impl QueueStateT for QueueState {
427431
self.next_avail.0
428432
}
429433

430-
fn next_used(&self) -> u16 {
431-
self.next_used.0
432-
}
433-
434434
fn set_next_avail(&mut self, next_avail: u16) {
435435
self.next_avail = Wrapping(next_avail);
436436
}
437437

438+
fn next_used(&self) -> u16 {
439+
self.next_used.0
440+
}
441+
438442
fn set_next_used(&mut self, next_used: u16) {
439443
self.next_used = Wrapping(next_used);
440444
}

crates/virtio-queue/src/state_sync.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ impl QueueStateT for QueueStateSync {
7575
self.lock_state().max_size()
7676
}
7777

78+
fn size(&self) -> u16 {
79+
self.lock_state().size()
80+
}
81+
7882
fn set_size(&mut self, size: u16) {
7983
self.lock_state().set_size(size);
8084
}
@@ -136,14 +140,14 @@ impl QueueStateT for QueueStateSync {
136140
self.lock_state().next_avail()
137141
}
138142

139-
fn next_used(&self) -> u16 {
140-
self.lock_state().next_used()
141-
}
142-
143143
fn set_next_avail(&mut self, next_avail: u16) {
144144
self.lock_state().set_next_avail(next_avail);
145145
}
146146

147+
fn next_used(&self) -> u16 {
148+
self.lock_state().next_used()
149+
}
150+
147151
fn set_next_used(&mut self, next_used: u16) {
148152
self.lock_state().set_next_used(next_used);
149153
}
@@ -210,7 +214,9 @@ mod tests {
210214
assert_eq!(q.lock().size, 0x100);
211215

212216
assert_eq!(q.max_size(), 0x100);
217+
assert_eq!(q.size(), 0x100);
213218
q.set_size(0x80);
219+
assert_eq!(q.size(), 0x80);
214220
assert_eq!(q.max_size(), 0x100);
215221
q.set_next_avail(5);
216222
assert_eq!(q.next_avail(), 5);

0 commit comments

Comments
 (0)