I'd expect it would be something with QEMUIOvector :-)  Glad you found it!

On Wed, Aug 14, 2013 at 2:44 PM, Spensky, Chad - 0559 - MITLL
<chad.spen...@ll.mit.edu> wrote:
> Wolfgang,
>
>   Thanks so much for the response.  It turns out that wasn't handling the
> QEMUIOVector properly.  When I first implemented it, I saw that the iovec
> was a pointer and assumed that there would only ever be one.  Given the
> lack of documentation and my lack of understanding this went undetected
> for a while.  everything now seems to work just fine.  :-)  See below for
> the portion of code that threw me off.  Thanks again!

Just so you know (possibly to be safer?)  the code I use was based on
these functions (used to be declared qemu-common.h and iov.h, moved or
refactored I think recently?):

void qemu_iovec_to_fd(int fd, QEMUIOVector *qiov);
void iov_to_fd(int fd, const struct iovec *iov, unsigned int iov_cnt);

void qemu_iovec_to_fd(int fd, QEMUIOVector *qiov)
{
    iov_to_fd(fd, qiov->iov, qiov->niov);
}

void iov_to_fd(int fd, const struct iovec *iov, const unsigned int iov_cnt)
{
    unsigned int i;
    for (i = 0; i < iov_cnt; i++)
    {
        assert(qemu_write_full(fd, iov[i].iov_base, iov[i].iov_len) ==
               iov[i].iov_len);
    }
}


Thus, you have to loop through the iovector (as I think you found and
just fixed).

-- 
Wolf
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to