#define VIRTIO_BLOCK_DEV_ID 0x1001
#define VIRTIO_BALLOON_DEV_ID 0x1002
#define VIRTIO_CONSOLE_DEV_ID 0x1003
+#define VIRTIO_SYMBIOTIC_DEV_ID 0x100a
+#define VIRTIO_SYMMOD_DEV_ID 0x100b
+#define VIRTIO_VNET_DEV_ID 0x100c
+#define VIRTIO_NET_SUBDEVICE_ID 1
#define VIRTIO_BLOCK_SUBDEVICE_ID 2
#define VIRTIO_BALLOON_SUBDEVICE_ID 5
-
+#define VIRTIO_SYMBIOTIC_SUBDEVICE_ID 10
+#define VIRTIO_SYMMOD_SUBDEVICE_ID 11
+#define VIRTIO_VNET_SUBDEVICE_ID 12
#define HOST_FEATURES_PORT 0
#define GUEST_FEATURES_PORT 4
/* This means don't interrupt guest when buffer consumed. */
#define VIRTIO_NO_IRQ_FLAG 0x1
+
+/* ISR Flags */
+#define VIRTIO_ISR_ACTIVE 0x1
+#define VIRTIO_ISR_CFG_CHANGED 0x2
+
+
+
/* The virtio configuration space is a hybrid io/memory mapped model
* All IO is done via IO port accesses
* The IO ports access fields in a virtio data structure, and the base io port
addr_t ring_avail_addr;
addr_t ring_used_addr;
-
struct vring_desc * desc; // We can treat this as an array...
struct vring_avail * avail;
struct vring_used * used;