Changeset View
Changeset View
Standalone View
Standalone View
head/sys/dev/beri/virtio/virtio_block.c
Show First 20 Lines • Show All 181 Lines • ▼ Show 20 Lines | vtblk_proc(struct beri_vtblk_softc *sc, struct vqueue_info *vq) | ||||
switch (type) { | switch (type) { | ||||
case VIRTIO_BLK_T_OUT: | case VIRTIO_BLK_T_OUT: | ||||
case VIRTIO_BLK_T_IN: | case VIRTIO_BLK_T_IN: | ||||
err = vtblk_rdwr(sc, tiov + 1, i - 1, | err = vtblk_rdwr(sc, tiov + 1, i - 1, | ||||
offset, type, iolen); | offset, type, iolen); | ||||
break; | break; | ||||
case VIRTIO_BLK_T_GET_ID: | case VIRTIO_BLK_T_GET_ID: | ||||
/* Assume a single buffer */ | /* Assume a single buffer */ | ||||
strlcpy(iov[1].iov_base, sc->ident, | strncpy(iov[1].iov_base, sc->ident, | ||||
MIN(iov[1].iov_len, sizeof(sc->ident))); | MIN(iov[1].iov_len, sizeof(sc->ident))); | ||||
err = 0; | err = 0; | ||||
break; | break; | ||||
case VIRTIO_BLK_T_FLUSH: | case VIRTIO_BLK_T_FLUSH: | ||||
/* Possible? */ | /* Possible? */ | ||||
default: | default: | ||||
err = -ENOSYS; | err = -ENOSYS; | ||||
break; | break; | ||||
▲ Show 20 Lines • Show All 197 Lines • ▼ Show 20 Lines | backend_info(struct beri_vtblk_softc *sc) | ||||
s = (uint32_t *)cfg; | s = (uint32_t *)cfg; | ||||
for (i = 0; i < sizeof(struct virtio_blk_config); i+=4) { | for (i = 0; i < sizeof(struct virtio_blk_config); i+=4) { | ||||
WRITE4(sc, VIRTIO_MMIO_CONFIG + i, *s); | WRITE4(sc, VIRTIO_MMIO_CONFIG + i, *s); | ||||
s+=1; | s+=1; | ||||
} | } | ||||
sprintf(sc->ident, "Virtio block backend"); | strncpy(sc->ident, "Virtio block backend", sizeof(sc->ident)); | ||||
return (0); | return (0); | ||||
} | } | ||||
static void | static void | ||||
vtblk_intr(void *arg) | vtblk_intr(void *arg) | ||||
{ | { | ||||
struct beri_vtblk_softc *sc; | struct beri_vtblk_softc *sc; | ||||
▲ Show 20 Lines • Show All 149 Lines • Show Last 20 Lines |