[Spice-devel] Read data out of the Virtqueue

Charles.Tsai-蔡清海-研究發展部 charles.tsai at cloudena.com
Thu Mar 29 02:42:32 PDT 2012


Alon,

Forget my previous mail. When I dig into the vdservice, I found there was one bug to check the overlay I/O status after calling the VirtIO write function.
After I fixed the bug, I can see more printing raw data inside the Qemu now. Although I still find some issues, hopefully I can fix it as I debug more codes in both spice client and spice server. Thank you for your time.

-----Original Message-----
From: Charles.Tsai-蔡清海-研究發展部 
Sent: Wednesday, March 28, 2012 6:07 PM
To: 'Alon Levy'
Cc: spice-devel at lists.freedesktop.org
Subject: Read data out of the Virtqueue

Alon,

My printer driver can write the printing raw data into virtIO driver. But I cannot see the found the printing raw data in the spice server. For the vdagent, I found the following code segment which is a callback to read the data from the vdi_port. Do I need to add a similar code to read the data from the Virtio?

In Qemu, I do see vmc_write is called when the printer driver writes the printing raw data into the  virtIOdevice.
Consequently, function "spicevmc_red_channel_send_item" should be called to send the payload to the spice client. But I did not see function "spicevmc_red_channel_send_item" is called either. It looks like the printing rawa data is still inside the VirtIO queue. What function I need to add so as to pull the data out of the VirtIO queue?

=======================================================================================
struct SpiceCharDeviceState vdagent_char_device_state = {
    .wakeup = &vdagent_char_device_wakeup, };


void vdagent_char_device_wakeup(SpiceCharDeviceInstance *sin) {
    while (read_from_vdi_port());
}


More information about the Spice-devel mailing list