550W Document
550W, a high-end OS
virtio.h 文件参考
#include <asm/pgtable.h>
#include <common/types.h>
#include <os/lock.h>
virtio.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

struct  buf
 
struct  vring_desc_t
 
struct  vring_used_elem
 
struct  vring_used_area
 
struct  disk
 

宏定义

#define VIRTIO0   0x10001000
 
#define VIRTIO0_IRQ   1
 
#define VIRTIO_MAGIC   0x74726976
 
#define VIRTIO_VERSION   0x1
 
#define VIRTIO_DEVICE_ID_INV   0x0
 
#define VIRTIO_DEVICE_ID_NET   0x1
 
#define VIRTIO_DEVICE_ID_BLK   0x2
 
#define VIRTIO_VENDOR_ID_QEMU   0x554d4551
 
#define VIRTIO_MMIO_MAGIC_VALUE   0x000
 
#define VIRTIO_MMIO_VERSION   0x004
 
#define VIRTIO_MMIO_DEVICE_ID   0x008
 
#define VIRTIO_MMIO_VENDOR_ID   0x00c
 
#define VIRTIO_MMIO_DEVICE_FEATURES   0x010
 
#define VIRTIO_MMIO_DRIVER_FEATURES   0x020
 
#define VIRTIO_MMIO_GUEST_PAGE_SIZE   0x028
 
#define VIRTIO_MMIO_QUEUE_SEL   0x030
 
#define VIRTIO_MMIO_QUEUE_NUM_MAX   0x034
 
#define VIRTIO_MMIO_QUEUE_NUM   0x038
 
#define VIRTIO_MMIO_QUEUE_PFN   0x040
 
#define VIRTIO_MMIO_QUEUE_READY   0x044
 
#define VIRTIO_MMIO_QUEUE_NOTIFY   0x050
 
#define VIRTIO_MMIO_INTERRUPT_STATUS   0x060
 
#define VIRTIO_MMIO_INTERRUPT_ACK   0x064
 
#define VIRTIO_MMIO_STATUS   0x070
 
#define VIRTIO_MMIO_QUEUE_DESC_LOW   0x080
 
#define VIRTIO_MMIO_QUEUE_DESC_HIGH   0x084
 
#define VIRTIO_MMIO_DRIVER_DESC_LOW   0x090
 
#define VIRTIO_MMIO_DRIVER_DESC_HIGH   0x094
 
#define VIRTIO_MMIO_DEVICE_DESC_LOW   0x0a0
 
#define VIRTIO_MMIO_DEVICE_DESC_HIGH   0x0a4
 
#define VIRTIO_CONFIG_S_ACKNOWLEDGE   1
 
#define VIRTIO_CONFIG_S_DRIVER   2
 
#define VIRTIO_CONFIG_S_DRIVER_OK   4
 
#define VIRTIO_CONFIG_S_FEATURES_OK   8
 
#define VIRTIO_BLK_F_RO   5 /* Disk is read-only */
 
#define VIRTIO_BLK_F_SCSI   7 /* Supports scsi command passthru */
 
#define VIRTIO_BLK_F_CONFIG_WCE   11 /* Writeback mode available in config */
 
#define VIRTIO_BLK_F_MQ   12 /* support more than one vq */
 
#define VIRTIO_BLK_T_IN   0
 
#define VIRTIO_BLK_T_OUT   1
 
#define VIRTIO_F_ANY_LAYOUT   27
 
#define VIRTIO_RING_F_INDIRECT_DESC   28
 
#define VIRTIO_RING_F_EVENT_IDX   29
 
#define VRING_DESC_F_NEXT   1
 
#define VRING_DESC_F_WRITE   2
 
#define DESC_NUM   8
 
#define BSIZE   512
 
#define BNUM   1600
 
#define MAXOPBLOCKS   10
 
#define LOGSIZE   (MAXOPBLOCKS * 3)
 
#define NBUF   (MAXOPBLOCKS * 3)
 
#define DEV_VDA2   0
 
#define R(r)   ((volatile uint32 *)(virtio_base + (r)))
 

类型定义

typedef struct buf buf_t
 
typedef struct vring_desc_t vring_desc_t
 
typedef struct vring_used_elem vring_used_elem_t
 
typedef struct vring_used_area vring_used_area_t
 
typedef struct disk disk_t
 

函数

void d_virtio_disk_init (void)
 
void d_virtio_disk_rw (struct buf *b, int write)
 
void d_virtio_disk_intr (void)
 
void d_binit (void)
 
struct bufd_bread (uint, uint)
 
void d_brelse (struct buf *)
 
void d_bwrite (struct buf *)
 
void d_sd_read (char *buffers, uint *start_block_id, uint block_num)
 
void d_sd_write (char *buffers, uint *start_block_ids, uint block_num)
 

变量

uintptr_t virtio_base
 
disk_t disk
 

宏定义说明

◆ BNUM

#define BNUM   1600

◆ BSIZE

#define BSIZE   512

◆ DESC_NUM

#define DESC_NUM   8

◆ DEV_VDA2

#define DEV_VDA2   0

◆ LOGSIZE

#define LOGSIZE   (MAXOPBLOCKS * 3)

◆ MAXOPBLOCKS

#define MAXOPBLOCKS   10

◆ NBUF

#define NBUF   (MAXOPBLOCKS * 3)

◆ R

#define R (   r)    ((volatile uint32 *)(virtio_base + (r)))

◆ VIRTIO0

#define VIRTIO0   0x10001000

◆ VIRTIO0_IRQ

#define VIRTIO0_IRQ   1

◆ VIRTIO_BLK_F_CONFIG_WCE

#define VIRTIO_BLK_F_CONFIG_WCE   11 /* Writeback mode available in config */

◆ VIRTIO_BLK_F_MQ

#define VIRTIO_BLK_F_MQ   12 /* support more than one vq */

◆ VIRTIO_BLK_F_RO

#define VIRTIO_BLK_F_RO   5 /* Disk is read-only */

◆ VIRTIO_BLK_F_SCSI

#define VIRTIO_BLK_F_SCSI   7 /* Supports scsi command passthru */

◆ VIRTIO_BLK_T_IN

#define VIRTIO_BLK_T_IN   0

◆ VIRTIO_BLK_T_OUT

#define VIRTIO_BLK_T_OUT   1

◆ VIRTIO_CONFIG_S_ACKNOWLEDGE

#define VIRTIO_CONFIG_S_ACKNOWLEDGE   1

◆ VIRTIO_CONFIG_S_DRIVER

#define VIRTIO_CONFIG_S_DRIVER   2

◆ VIRTIO_CONFIG_S_DRIVER_OK

#define VIRTIO_CONFIG_S_DRIVER_OK   4

◆ VIRTIO_CONFIG_S_FEATURES_OK

#define VIRTIO_CONFIG_S_FEATURES_OK   8

◆ VIRTIO_DEVICE_ID_BLK

#define VIRTIO_DEVICE_ID_BLK   0x2

◆ VIRTIO_DEVICE_ID_INV

#define VIRTIO_DEVICE_ID_INV   0x0

◆ VIRTIO_DEVICE_ID_NET

#define VIRTIO_DEVICE_ID_NET   0x1

◆ VIRTIO_F_ANY_LAYOUT

#define VIRTIO_F_ANY_LAYOUT   27

◆ VIRTIO_MAGIC

#define VIRTIO_MAGIC   0x74726976

◆ VIRTIO_MMIO_DEVICE_DESC_HIGH

#define VIRTIO_MMIO_DEVICE_DESC_HIGH   0x0a4

◆ VIRTIO_MMIO_DEVICE_DESC_LOW

#define VIRTIO_MMIO_DEVICE_DESC_LOW   0x0a0

◆ VIRTIO_MMIO_DEVICE_FEATURES

#define VIRTIO_MMIO_DEVICE_FEATURES   0x010

◆ VIRTIO_MMIO_DEVICE_ID

#define VIRTIO_MMIO_DEVICE_ID   0x008

◆ VIRTIO_MMIO_DRIVER_DESC_HIGH

#define VIRTIO_MMIO_DRIVER_DESC_HIGH   0x094

◆ VIRTIO_MMIO_DRIVER_DESC_LOW

#define VIRTIO_MMIO_DRIVER_DESC_LOW   0x090

◆ VIRTIO_MMIO_DRIVER_FEATURES

#define VIRTIO_MMIO_DRIVER_FEATURES   0x020

◆ VIRTIO_MMIO_GUEST_PAGE_SIZE

#define VIRTIO_MMIO_GUEST_PAGE_SIZE   0x028

◆ VIRTIO_MMIO_INTERRUPT_ACK

#define VIRTIO_MMIO_INTERRUPT_ACK   0x064

◆ VIRTIO_MMIO_INTERRUPT_STATUS

#define VIRTIO_MMIO_INTERRUPT_STATUS   0x060

◆ VIRTIO_MMIO_MAGIC_VALUE

#define VIRTIO_MMIO_MAGIC_VALUE   0x000

◆ VIRTIO_MMIO_QUEUE_DESC_HIGH

#define VIRTIO_MMIO_QUEUE_DESC_HIGH   0x084

◆ VIRTIO_MMIO_QUEUE_DESC_LOW

#define VIRTIO_MMIO_QUEUE_DESC_LOW   0x080

◆ VIRTIO_MMIO_QUEUE_NOTIFY

#define VIRTIO_MMIO_QUEUE_NOTIFY   0x050

◆ VIRTIO_MMIO_QUEUE_NUM

#define VIRTIO_MMIO_QUEUE_NUM   0x038

◆ VIRTIO_MMIO_QUEUE_NUM_MAX

#define VIRTIO_MMIO_QUEUE_NUM_MAX   0x034

◆ VIRTIO_MMIO_QUEUE_PFN

#define VIRTIO_MMIO_QUEUE_PFN   0x040

◆ VIRTIO_MMIO_QUEUE_READY

#define VIRTIO_MMIO_QUEUE_READY   0x044

◆ VIRTIO_MMIO_QUEUE_SEL

#define VIRTIO_MMIO_QUEUE_SEL   0x030

◆ VIRTIO_MMIO_STATUS

#define VIRTIO_MMIO_STATUS   0x070

◆ VIRTIO_MMIO_VENDOR_ID

#define VIRTIO_MMIO_VENDOR_ID   0x00c

◆ VIRTIO_MMIO_VERSION

#define VIRTIO_MMIO_VERSION   0x004

◆ VIRTIO_RING_F_EVENT_IDX

#define VIRTIO_RING_F_EVENT_IDX   29

◆ VIRTIO_RING_F_INDIRECT_DESC

#define VIRTIO_RING_F_INDIRECT_DESC   28

◆ VIRTIO_VENDOR_ID_QEMU

#define VIRTIO_VENDOR_ID_QEMU   0x554d4551

◆ VIRTIO_VERSION

#define VIRTIO_VERSION   0x1

◆ VRING_DESC_F_NEXT

#define VRING_DESC_F_NEXT   1

◆ VRING_DESC_F_WRITE

#define VRING_DESC_F_WRITE   2

类型定义说明

◆ buf_t

typedef struct buf buf_t

◆ disk_t

typedef struct disk disk_t

◆ vring_desc_t

typedef struct vring_desc_t vring_desc_t

◆ vring_used_area_t

◆ vring_used_elem_t

函数说明

◆ d_binit()

void d_binit ( void  )

◆ d_bread()

struct buf* d_bread ( uint  dev,
uint  sectorno 
)

◆ d_brelse()

void d_brelse ( struct buf b)

◆ d_bwrite()

void d_bwrite ( struct buf b)

◆ d_sd_read()

void d_sd_read ( char *  buffers,
uint start_block_id,
uint  block_num 
)

◆ d_sd_write()

void d_sd_write ( char *  buffers,
uint start_block_ids,
uint  block_num 
)

◆ d_virtio_disk_init()

void d_virtio_disk_init ( void  )

◆ d_virtio_disk_intr()

void d_virtio_disk_intr ( void  )

◆ d_virtio_disk_rw()

void d_virtio_disk_rw ( struct buf b,
int  write 
)

变量说明

◆ disk

disk_t disk
extern

◆ virtio_base

uintptr_t virtio_base
extern