summary refs log tree commit diff
path: root/devices/src/pci
diff options
context:
space:
mode:
authorFletcher Woodruff <fletcherw@chromium.org>2019-09-26 13:05:33 -0600
committerCommit Bot <commit-bot@chromium.org>2019-12-04 18:02:49 +0000
commit277ea5f4b4e2e2fed0b07f68451514cef521a95a (patch)
tree43530e3cb6825604424122650ddd07c85997049b /devices/src/pci
parent38b9ad8620e7797d7a22006caf5edb6416e32f7b (diff)
downloadcrosvm-277ea5f4b4e2e2fed0b07f68451514cef521a95a.tar
crosvm-277ea5f4b4e2e2fed0b07f68451514cef521a95a.tar.gz
crosvm-277ea5f4b4e2e2fed0b07f68451514cef521a95a.tar.bz2
crosvm-277ea5f4b4e2e2fed0b07f68451514cef521a95a.tar.lz
crosvm-277ea5f4b4e2e2fed0b07f68451514cef521a95a.tar.xz
crosvm-277ea5f4b4e2e2fed0b07f68451514cef521a95a.tar.zst
crosvm-277ea5f4b4e2e2fed0b07f68451514cef521a95a.zip
ac97: combine PlaybackError and CaptureError
PlaybackError and CaptureError encode the same error cases. Combine the
two into one Error type, AudioError.

BUG=None
TEST=builds

Change-Id: I44259227d67a0284c9a11c4aafd86fafe1006f8b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1925727
Reviewed-by: Chih-Yang Hsia <paulhsia@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Fletcher Woodruff <fletcherw@chromium.org>
Diffstat (limited to 'devices/src/pci')
-rw-r--r--devices/src/pci/ac97_bus_master.rs60
1 files changed, 15 insertions, 45 deletions
diff --git a/devices/src/pci/ac97_bus_master.rs b/devices/src/pci/ac97_bus_master.rs
index a0a6344..4a385f5 100644
--- a/devices/src/pci/ac97_bus_master.rs
+++ b/devices/src/pci/ac97_bus_master.rs
@@ -95,23 +95,17 @@ impl Display for GuestMemoryError {
     }
 }
 
-impl From<GuestMemoryError> for PlaybackError {
+impl From<GuestMemoryError> for AudioError {
     fn from(err: GuestMemoryError) -> Self {
-        PlaybackError::ReadingGuestError(err)
-    }
-}
-
-impl From<GuestMemoryError> for CaptureError {
-    fn from(err: GuestMemoryError) -> Self {
-        CaptureError::ReadingGuestError(err)
+        AudioError::ReadingGuestError(err)
     }
 }
 
 type GuestMemoryResult<T> = std::result::Result<T, GuestMemoryError>;
 
-// Internal error type used for reporting errors from the audio playback thread.
+// Internal error type used for reporting errors from the audio thread.
 #[derive(Debug)]
-enum PlaybackError {
+enum AudioError {
     // Failure to read guest memory.
     ReadingGuestError(GuestMemoryError),
     // Failure to get an buffer from the stream.
@@ -120,11 +114,11 @@ enum PlaybackError {
     WritingOutput(std::io::Error),
 }
 
-impl std::error::Error for PlaybackError {}
+impl std::error::Error for AudioError {}
 
-impl Display for PlaybackError {
+impl Display for AudioError {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        use self::PlaybackError::*;
+        use self::AudioError::*;
 
         match self {
             ReadingGuestError(e) => write!(f, "Failed to read guest memory: {}.", e),
@@ -134,31 +128,7 @@ impl Display for PlaybackError {
     }
 }
 
-type PlaybackResult<T> = std::result::Result<T, PlaybackError>;
-
-// Internal error type used for reporting errors from the audio capture thread.
-#[derive(Debug)]
-enum CaptureError {
-    // Failure to read guest memory.
-    ReadingGuestError(GuestMemoryError),
-    // Failure to get an buffer from the stream.
-    StreamError(Box<dyn Error>),
-}
-
-impl std::error::Error for CaptureError {}
-
-impl Display for CaptureError {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        use self::CaptureError::*;
-
-        match self {
-            ReadingGuestError(e) => write!(f, "Failed to read guest memory: {}.", e),
-            StreamError(e) => write!(f, "Failed to get a buffer from the stream: {}", e),
-        }
-    }
-}
-
-type CaptureResult<T> = std::result::Result<T, CaptureError>;
+type AudioResult<T> = std::result::Result<T, AudioError>;
 
 // Audio thread book-keeping data
 struct AudioThreadInfo {
@@ -633,7 +603,7 @@ fn play_buffer(
     regs: &mut Ac97BusMasterRegs,
     mem: &GuestMemory,
     out_buffer: &mut PlaybackBuffer,
-) -> PlaybackResult<()> {
+) -> AudioResult<()> {
     // If the current buffer had any samples in it, mark it as done.
     if regs.func_regs_mut(Ac97Function::Output).picb > 0 {
         buffer_completed(regs, mem, Ac97Function::Output)?
@@ -646,7 +616,7 @@ fn play_buffer(
         let zeros = vec![0u8; buffer_len as usize];
         out_buffer
             .write(&zeros)
-            .map_err(PlaybackError::WritingOutput)?;
+            .map_err(AudioError::WritingOutput)?;
     }
     Ok(())
 }
@@ -695,11 +665,11 @@ fn audio_out_thread(
     mem: GuestMemory,
     thread_run: &AtomicBool,
     mut output_stream: Box<dyn PlaybackBufferStream>,
-) -> PlaybackResult<()> {
+) -> AudioResult<()> {
     while thread_run.load(Ordering::Relaxed) {
         output_stream
             .next_playback_buffer()
-            .map_err(PlaybackError::StreamError)
+            .map_err(AudioError::StreamError)
             .and_then(|mut pb_buf| play_buffer(&mut regs.lock(), &mem, &mut pb_buf))?;
     }
     Ok(())
@@ -710,7 +680,7 @@ fn capture_buffer(
     regs: &mut Ac97BusMasterRegs,
     mem: &GuestMemory,
     in_buffer: &mut CaptureBuffer,
-) -> CaptureResult<()> {
+) -> AudioResult<()> {
     // If the current buffer had any samples in it, mark it as done.
     if regs.func_regs_mut(Ac97Function::Input).picb > 0 {
         buffer_completed(regs, mem, Ac97Function::Input)?
@@ -728,11 +698,11 @@ fn audio_in_thread(
     mem: GuestMemory,
     thread_run: &AtomicBool,
     mut input_stream: Box<dyn CaptureBufferStream>,
-) -> CaptureResult<()> {
+) -> AudioResult<()> {
     while thread_run.load(Ordering::Relaxed) {
         input_stream
             .next_capture_buffer()
-            .map_err(CaptureError::StreamError)
+            .map_err(AudioError::StreamError)
             .and_then(|mut cp_buf| capture_buffer(&mut regs.lock(), &mem, &mut cp_buf))?;
     }
     Ok(())