Switch to common::dma::Dma in virtio-*.
This commit is contained in:
@@ -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" }
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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,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};
|
||||
|
||||
@@ -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};
|
||||
|
||||
Reference in New Issue
Block a user