Changeset View
Changeset View
Standalone View
Standalone View
usr.sbin/bhyve/virtio.h
Show First 20 Lines • Show All 386 Lines • ▼ Show 20 Lines | struct vqueue_info { | ||||
void (*vq_notify)(void *, struct vqueue_info *); | void (*vq_notify)(void *, struct vqueue_info *); | ||||
/* called instead of vc_notify, if not NULL */ | /* called instead of vc_notify, if not NULL */ | ||||
struct virtio_softc *vq_vs; /* backpointer to softc */ | struct virtio_softc *vq_vs; /* backpointer to softc */ | ||||
uint16_t vq_num; /* we're the num'th queue in the softc */ | uint16_t vq_num; /* we're the num'th queue in the softc */ | ||||
uint16_t vq_flags; /* flags (see above) */ | uint16_t vq_flags; /* flags (see above) */ | ||||
uint16_t vq_last_avail; /* a recent value of vq_avail->va_idx */ | uint16_t vq_last_avail; /* a recent value of vq_avail->va_idx */ | ||||
uint16_t vq_next_used; /* index of the next used slot to be filled */ | |||||
uint16_t vq_save_used; /* saved vq_used->vu_idx; see vq_endchains */ | uint16_t vq_save_used; /* saved vq_used->vu_idx; see vq_endchains */ | ||||
uint16_t vq_msix_idx; /* MSI-X index, or VIRTIO_MSI_NO_VECTOR */ | uint16_t vq_msix_idx; /* MSI-X index, or VIRTIO_MSI_NO_VECTOR */ | ||||
uint32_t vq_pfn; /* PFN of virt queue (not shifted!) */ | uint32_t vq_pfn; /* PFN of virt queue (not shifted!) */ | ||||
volatile struct virtio_desc *vq_desc; /* descriptor array */ | volatile struct virtio_desc *vq_desc; /* descriptor array */ | ||||
volatile struct vring_avail *vq_avail; /* the "avail" ring */ | volatile struct vring_avail *vq_avail; /* the "avail" ring */ | ||||
volatile struct vring_used *vq_used; /* the "used" ring */ | volatile struct vring_used *vq_used; /* the "used" ring */ | ||||
▲ Show 20 Lines • Show All 71 Lines • ▼ Show 20 Lines | void vi_softc_linkup(struct virtio_softc *vs, struct virtio_consts *vc, | ||||
void *dev_softc, struct pci_devinst *pi, | void *dev_softc, struct pci_devinst *pi, | ||||
struct vqueue_info *queues); | struct vqueue_info *queues); | ||||
int vi_intr_init(struct virtio_softc *vs, int barnum, int use_msix); | int vi_intr_init(struct virtio_softc *vs, int barnum, int use_msix); | ||||
void vi_reset_dev(struct virtio_softc *); | void vi_reset_dev(struct virtio_softc *); | ||||
void vi_set_io_bar(struct virtio_softc *, int); | void vi_set_io_bar(struct virtio_softc *, int); | ||||
int vq_getchain(struct vqueue_info *vq, uint16_t *pidx, | int vq_getchain(struct vqueue_info *vq, uint16_t *pidx, | ||||
struct iovec *iov, int n_iov, uint16_t *flags); | struct iovec *iov, int n_iov, uint16_t *flags); | ||||
void vq_retchain(struct vqueue_info *vq); | void vq_retchains(struct vqueue_info *vq, uint16_t n_chains); | ||||
void vq_relchain_prepare(struct vqueue_info *vq, uint16_t idx, | |||||
uint32_t iolen); | |||||
void vq_relchain_publish(struct vqueue_info *vq); | |||||
void vq_relchain(struct vqueue_info *vq, uint16_t idx, uint32_t iolen); | void vq_relchain(struct vqueue_info *vq, uint16_t idx, uint32_t iolen); | ||||
void vq_endchains(struct vqueue_info *vq, int used_all_avail); | void vq_endchains(struct vqueue_info *vq, int used_all_avail); | ||||
uint64_t vi_pci_read(struct vmctx *ctx, int vcpu, struct pci_devinst *pi, | uint64_t vi_pci_read(struct vmctx *ctx, int vcpu, struct pci_devinst *pi, | ||||
int baridx, uint64_t offset, int size); | int baridx, uint64_t offset, int size); | ||||
void vi_pci_write(struct vmctx *ctx, int vcpu, struct pci_devinst *pi, | void vi_pci_write(struct vmctx *ctx, int vcpu, struct pci_devinst *pi, | ||||
int baridx, uint64_t offset, int size, uint64_t value); | int baridx, uint64_t offset, int size, uint64_t value); | ||||
#endif /* _VIRTIO_H_ */ | #endif /* _VIRTIO_H_ */ |