ahcid: Use interrupts

This commit is contained in:
Jeremy Soller
2023-07-17 19:33:25 -06:00
parent f8404a1ea0
commit 07c3297134
2 changed files with 3 additions and 16 deletions
+2 -15
View File
@@ -1,6 +1,5 @@
use std::convert::TryInto;
use std::ptr;
use std::thread;
use syscall::io::Dma;
use syscall::error::Result;
@@ -66,8 +65,6 @@ impl DiskATA {
BufferKind::Write(ref buffer) => (true, buffer.as_ptr() as usize, buffer.len()/512),
};
//TODO: Go back to interrupt magic
let use_interrupts = false;
loop {
let mut request = match self.request_opt.take() {
Some(request) => if address == request.address && total_sectors == request.total_sectors {
@@ -95,12 +92,7 @@ impl DiskATA {
// Continue waiting for request
request.running_opt = Some(running);
self.request_opt = Some(request);
if use_interrupts {
return Ok(None);
} else {
thread::yield_now();
continue;
}
return Ok(None);
}
self.port.ata_stop(running.0)?;
@@ -130,12 +122,7 @@ impl DiskATA {
self.request_opt = Some(request);
if use_interrupts {
return Ok(None);
} else {
thread::yield_now();
continue;
}
return Ok(None);
} else {
// Done
return Ok(Some(request.sector * 512));
+1 -1
View File
@@ -117,7 +117,7 @@ impl HbaPort {
self.fb[1].write(((fb.physical() as u64) >> 32) as u32);
let is = self.is.read();
self.is.write(is);
self.ie.write(0 /*TODO: Enable interrupts: 0b10111*/);
self.ie.write(0b10111);
let serr = self.serr.read();
self.serr.write(serr);