Read completion using ptr::read_volatile

This commit is contained in:
Jeremy Soller
2019-08-27 21:16:58 -06:00
parent 0e7b056508
commit 745d8818e1
+4 -2
View File
@@ -1,4 +1,4 @@
use std::thread;
use std::{ptr, thread};
use std::collections::BTreeMap;
use syscall::io::{Dma, Io, Mmio};
use syscall::error::{Error, Result, EINVAL};
@@ -239,7 +239,9 @@ impl NvmeCompQueue {
}
fn complete(&mut self) -> Option<(usize, NvmeComp)> {
let entry = self.data[self.i];
let entry = unsafe {
ptr::read_volatile(self.data.as_ptr().add(self.i))
};
if ((entry.status & 1) == 1) == self.phase {
self.i = (self.i + 1) % self.data.len();
if self.i == 0 {