mirror of
https://github.com/sgmarz/osblog.git
synced 2024-11-23 18:06:20 +04:00
Finish virtio
This commit is contained in:
parent
858c838e73
commit
703c2cf5b0
@ -256,6 +256,9 @@ pub fn block_op(dev: usize, buffer: *mut u8, size: u32, offset: u64, write: bool
|
||||
return;
|
||||
}
|
||||
let sector = offset / 512;
|
||||
// TODO: Before we get here, we are NOT allowed to schedule a read or
|
||||
// write OUTSIDE of the disk's size. So, we can read capacity from
|
||||
// the configuration space to ensure we stay within bounds.
|
||||
let blk_request_size = size_of::<Request>();
|
||||
let blk_request = kmalloc(blk_request_size) as *mut Request;
|
||||
let desc = Descriptor { addr: &(*blk_request).header as *const Header as u64,
|
||||
|
@ -209,6 +209,7 @@ pub mod kmem;
|
||||
pub mod page;
|
||||
pub mod plic;
|
||||
pub mod process;
|
||||
pub mod rng;
|
||||
pub mod sched;
|
||||
pub mod syscall;
|
||||
pub mod trap;
|
||||
|
@ -4,6 +4,7 @@
|
||||
// 10 March 2020
|
||||
|
||||
use crate::{block, block::setup_block_device, page::PAGE_SIZE};
|
||||
use crate::rng::setup_entropy_device;
|
||||
use core::mem::size_of;
|
||||
|
||||
// Flags
|
||||
@ -24,6 +25,12 @@ pub const VIRTIO_USED_F_NO_NOTIFY: u16 = 1;
|
||||
pub const VIRTIO_RING_SIZE: usize = 1 << 7;
|
||||
|
||||
// VirtIO structures
|
||||
|
||||
// The descriptor holds the data that we need to send to
|
||||
// the device. The address is a physical address and NOT
|
||||
// a virtual address. The len is in bytes and the flags are
|
||||
// specified above. Any descriptor can be chained, hence the
|
||||
// next field, but only if the F_NEXT flag is specified.
|
||||
#[repr(C)]
|
||||
pub struct Descriptor {
|
||||
pub addr: u64,
|
||||
@ -64,6 +71,8 @@ pub struct Queue {
|
||||
pub used: Used,
|
||||
}
|
||||
|
||||
// The MMIO transport is "legacy" in QEMU, so these registers represent
|
||||
// the legacy interface.
|
||||
#[repr(usize)]
|
||||
pub enum MmioOffsets {
|
||||
MagicValue = 0x000,
|
||||
@ -280,10 +289,6 @@ pub fn probe() {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn setup_entropy_device(_ptr: *mut u32) -> bool {
|
||||
false
|
||||
}
|
||||
|
||||
pub fn setup_network_device(_ptr: *mut u32) -> bool {
|
||||
false
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user