mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 02:24:58 -06:00
pc-bios/s390-ccw: add simplified virtio call
Add virtio_run(VirtioCmd) call to use simple declarative approach. Signed-off-by: Eugene (jno) Dvurechenski <jno@linux.vnet.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
This commit is contained in:
parent
a1102cebbf
commit
8944edc3dd
2 changed files with 26 additions and 0 deletions
|
@ -225,6 +225,23 @@ static int vring_wait_reply(void)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int virtio_run(VDev *vdev, int vqid, VirtioCmd *cmd)
|
||||||
|
{
|
||||||
|
VRing *vr = &vdev->vrings[vqid];
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
do {
|
||||||
|
vring_send_buf(vr, cmd[i].data, cmd[i].size,
|
||||||
|
cmd[i].flags | (i ? VRING_HIDDEN_IS_CHAIN : 0));
|
||||||
|
} while (cmd[i++].flags & VRING_DESC_F_NEXT);
|
||||||
|
|
||||||
|
vring_wait_reply();
|
||||||
|
if (drain_irqs(vr->schid)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************
|
/***********************************************
|
||||||
* Virtio block *
|
* Virtio block *
|
||||||
***********************************************/
|
***********************************************/
|
||||||
|
|
|
@ -248,4 +248,13 @@ typedef struct VDev VDev;
|
||||||
VDev *virtio_get_device(void);
|
VDev *virtio_get_device(void);
|
||||||
VirtioDevType virtio_get_device_type(void);
|
VirtioDevType virtio_get_device_type(void);
|
||||||
|
|
||||||
|
struct VirtioCmd {
|
||||||
|
void *data;
|
||||||
|
int size;
|
||||||
|
int flags;
|
||||||
|
};
|
||||||
|
typedef struct VirtioCmd VirtioCmd;
|
||||||
|
|
||||||
|
int virtio_run(VDev *vdev, int vqid, VirtioCmd *cmd);
|
||||||
|
|
||||||
#endif /* VIRTIO_H */
|
#endif /* VIRTIO_H */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue