Re: KVM Block Device Driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Also there are utility functions within the QEMU code base that help deal with QEMUIOVectors (as far as I remember) which would help maybe so you don't have to directly code using them.

--
Wolf

On Aug 18, 2013, at 10:04 AM, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote:

> Il 14/08/2013 20:44, Spensky, Chad - 0559 - MITLL ha scritto:
>> 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!
>> 
>> - Chad
>> 
>> 
>> Proposed change to qemu-common.h (:
>> 
>> typedef struct QEMUIOVector {
>>    struct iovec *iov;
>>    int niov;
>>    int nalloc;
>>    size_t size;
>> } QEMUIOVector;
>> 
>> changed to:
>> 
>> // Array of I/O vectors
>> 
>> typedef struct QEMUIOVector {
>> struct iovec iov[];
>> int niov;
>> int nalloc;
>> size_t size;
>> } QEMUIOVector;
> 
> This wouldn't work.  As you wrote it, it wouldn't even compile.
> 
> Embedding an array is possible if you place it at the end of the struct,
> but then it is not possible to resize the array (because when you
> reallocate it, the containing QEMUIOVector could move in memory and any
> pointers to the containing QEMUIOVector would become invalid).
> 
> In C, a dynamically-allocated array is represented by a pointer to the
> first item.  The size of the array and the size of the
> dynamically-allocated memory block are stored together with the pointer
> (in this case, in the niov and nalloc members).
> 
> In fact, whenever you see something like "iovec iov[]" in Java, what's
> being stored in memory is exactly a pointer to the first item, the size
> of the array and the size of the dynamically-allocated memory block.  C
> just makes that explicit.
> 
> Paolo
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux