From 4e1837f855b88fdced2941b17509e13b0c8fa518 Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Tue, 13 Sep 2011 13:34:37 +0100 Subject: trace: add virtio_set_status() trace event The virtio device lifecycle can be observed by looking at the sequence of set status operations. This is especially important for catching the reset operation (status value 0), which resets the device and all virtqueues. Signed-off-by: Stefan Hajnoczi Signed-off-by: Blue Swirl --- hw/virtio.c | 10 ++++++++++ hw/virtio.h | 9 +-------- 2 files changed, 11 insertions(+), 8 deletions(-) (limited to 'hw') diff --git a/hw/virtio.c b/hw/virtio.c index 13aa0fa..946d911 100644 --- a/hw/virtio.c +++ b/hw/virtio.c @@ -498,6 +498,16 @@ void virtio_update_irq(VirtIODevice *vdev) virtio_notify_vector(vdev, VIRTIO_NO_VECTOR); } +void virtio_set_status(VirtIODevice *vdev, uint8_t val) +{ + trace_virtio_set_status(vdev, val); + + if (vdev->set_status) { + vdev->set_status(vdev, val); + } + vdev->status = val; +} + void virtio_reset(void *opaque) { VirtIODevice *vdev = opaque; diff --git a/hw/virtio.h b/hw/virtio.h index 4d20d9b..2d18209 100644 --- a/hw/virtio.h +++ b/hw/virtio.h @@ -135,14 +135,6 @@ struct VirtIODevice VMChangeStateEntry *vmstate; }; -static inline void virtio_set_status(VirtIODevice *vdev, uint8_t val) -{ - if (vdev->set_status) { - vdev->set_status(vdev, val); - } - vdev->status = val; -} - VirtQueue *virtio_add_queue(VirtIODevice *vdev, int queue_size, void (*handle_output)(VirtIODevice *, VirtQueue *)); @@ -190,6 +182,7 @@ int virtio_queue_get_num(VirtIODevice *vdev, int n); void virtio_queue_notify(VirtIODevice *vdev, int n); uint16_t virtio_queue_vector(VirtIODevice *vdev, int n); void virtio_queue_set_vector(VirtIODevice *vdev, int n, uint16_t vector); +void virtio_set_status(VirtIODevice *vdev, uint8_t val); void virtio_reset(void *opaque); void virtio_update_irq(VirtIODevice *vdev); -- cgit v1.1