Merge branch 'ps2-timeout' into 'master'
ps2d: Use sleep rather than busy-waits for timeouts See merge request redox-os/drivers!231
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
use common::io::{Io, Pio, ReadOnly, WriteOnly};
|
||||
use log::{debug, error, info, trace};
|
||||
|
||||
use std::fmt;
|
||||
use std::{fmt, thread, time::Duration};
|
||||
|
||||
#[cfg(target_arch = "aarch64")]
|
||||
#[inline(always)]
|
||||
@@ -133,29 +133,25 @@ impl Ps2 {
|
||||
}
|
||||
|
||||
fn wait_read(&mut self) -> Result<(), Error> {
|
||||
let mut timeout = 100_000;
|
||||
let mut timeout = 500;
|
||||
while timeout > 0 {
|
||||
if self.status().contains(StatusFlags::OUTPUT_FULL) {
|
||||
return Ok(());
|
||||
}
|
||||
unsafe {
|
||||
pause();
|
||||
}
|
||||
timeout -= 1;
|
||||
thread::sleep(Duration::from_millis(1));
|
||||
}
|
||||
Err(Error::ReadTimeout)
|
||||
}
|
||||
|
||||
fn wait_write(&mut self) -> Result<(), Error> {
|
||||
let mut timeout = 100_000;
|
||||
let mut timeout = 500;
|
||||
while timeout > 0 {
|
||||
if !self.status().contains(StatusFlags::INPUT_FULL) {
|
||||
return Ok(());
|
||||
}
|
||||
unsafe {
|
||||
pause();
|
||||
}
|
||||
timeout -= 1;
|
||||
thread::sleep(Duration::from_millis(1));
|
||||
}
|
||||
Err(Error::WriteTimeout)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user