diff options
author | Fletcher Woodruff <fletcherw@chromium.org> | 2019-09-26 13:05:33 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-12-04 18:02:49 +0000 |
commit | 277ea5f4b4e2e2fed0b07f68451514cef521a95a (patch) | |
tree | 43530e3cb6825604424122650ddd07c85997049b /devices/src/pci | |
parent | 38b9ad8620e7797d7a22006caf5edb6416e32f7b (diff) | |
download | crosvm-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.rs | 60 |
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(()) |