Switch to common::dma::Dma in virtio-*.

This commit is contained in:
4lDO2
2023-07-18 13:47:15 +02:00
parent d9d8d06d33
commit e4374ac60d
5 changed files with 17 additions and 14 deletions
+1
View File
@@ -17,5 +17,6 @@ redox_syscall = "0.3"
partitionlib = { git = "https://gitlab.redox-os.org/redox-os/partitionlib.git" }
block-io-wrapper = { path = "../block-io-wrapper" }
common = { path = "../common" }
pcid = { path = "../pcid" }
virtio-core = { path = "../virtio-core" }
+10 -9
View File
@@ -7,6 +7,7 @@ use std::io::Seek;
use std::fmt::Write;
use std::sync::Arc;
use common::dma::Dma;
use partitionlib::LogicalBlockSize;
use partitionlib::PartitionTable;
use syscall::*;
@@ -27,15 +28,15 @@ trait BlkExtension {
impl BlkExtension for Queue<'_> {
async fn read(&self, block: u64, target: &mut [u8]) -> usize {
let req = syscall::Dma::new(BlockVirtRequest {
let req = Dma::new(BlockVirtRequest {
ty: BlockRequestTy::In,
reserved: 0,
sector: block,
})
.unwrap();
let result = unsafe { syscall::Dma::<[u8]>::zeroed_unsized(target.len()) }.unwrap();
let status = syscall::Dma::new(u8::MAX).unwrap();
let result = unsafe { Dma::<[u8]>::zeroed_unsized(target.len()) }.unwrap();
let status = Dma::new(u8::MAX).unwrap();
let chain = ChainBuilder::new()
.chain(Buffer::new(&req))
@@ -52,17 +53,17 @@ impl BlkExtension for Queue<'_> {
}
async fn write(&self, block: u64, target: &[u8]) -> usize {
let req = syscall::Dma::new(BlockVirtRequest {
let req = Dma::new(BlockVirtRequest {
ty: BlockRequestTy::Out,
reserved: 0,
sector: block,
})
.unwrap();
let mut result = unsafe { syscall::Dma::<[u8]>::zeroed_unsized(target.len()) }.unwrap();
let mut result = unsafe { Dma::<[u8]>::zeroed_unsized(target.len()) }.unwrap();
result.copy_from_slice(target.as_ref());
let status = syscall::Dma::new(u8::MAX).unwrap();
let status = Dma::new(u8::MAX).unwrap();
let chain = ChainBuilder::new()
.chain(Buffer::new(&req))
@@ -122,15 +123,15 @@ impl<'a> DiskScheme<'a> {
impl<'a, 'b> Read for VirtioShim<'a, 'b> {
fn read(&mut self, buf: &mut [u8]) -> IoResult<usize> {
let read_block = |block: u64, block_bytes: &mut [u8]| -> Result<(), ()> {
let req = syscall::Dma::new(BlockVirtRequest {
let req = Dma::new(BlockVirtRequest {
ty: BlockRequestTy::In,
reserved: 0,
sector: block,
})
.unwrap();
let result = syscall::Dma::new([0u8; 512]).unwrap();
let status = syscall::Dma::new(u8::MAX).unwrap();
let result = Dma::new([0u8; 512]).unwrap();
let status = Dma::new(u8::MAX).unwrap();
let chain = ChainBuilder::new()
.chain(Buffer::new(&req))
+3 -3
View File
@@ -246,7 +246,7 @@ pub struct Buffer {
}
impl Buffer {
pub fn new<T>(val: &syscall::Dma<T>) -> Self {
pub fn new<T>(val: &common::dma::Dma<T>) -> Self {
Self {
buffer: val.physical(),
size: core::mem::size_of::<T>(),
@@ -254,7 +254,7 @@ impl Buffer {
}
}
pub fn new_unsized<T>(val: &syscall::Dma<[T]>) -> Self {
pub fn new_unsized<T>(val: &common::dma::Dma<[T]>) -> Self {
Self {
buffer: val.physical(),
size: core::mem::size_of::<T>() * val.len(),
@@ -262,7 +262,7 @@ impl Buffer {
}
}
pub fn new_sized<T>(val: &syscall::Dma<[T]>, size: usize) -> Self {
pub fn new_sized<T>(val: &common::dma::Dma<[T]>, size: usize) -> Self {
Self {
buffer: val.physical(),
size,
+1 -1
View File
@@ -1,8 +1,8 @@
use crate::spec::*;
use crate::utils::align;
use common::dma::Dma;
use event::EventQueue;
use syscall::Dma;
use core::mem::size_of;
use core::sync::atomic::{AtomicU16, Ordering};
+2 -1
View File
@@ -3,8 +3,9 @@ use std::collections::BTreeMap;
use std::sync::atomic::{AtomicU32, Ordering};
use std::sync::Arc;
use common::dma::Dma;
use inputd::Damage;
use syscall::{Dma, Error as SysError, SchemeMut, EINVAL};
use syscall::{Error as SysError, SchemeMut, EINVAL};
use virtio_core::spec::{Buffer, ChainBuilder, DescriptorFlags};
use virtio_core::transport::{Error, Queue, StandardTransport};