On Wed, Dec 02, 2009 at 07:19:17PM +0100, Juan Quintela wrote: > "Michael S. Tsirkin" <m...@redhat.com> wrote: > > On Wed, Dec 02, 2009 at 01:04:04PM +0100, Juan Quintela wrote: > >> virtio_common_init() creates a struct with the right size, DO_UPCAST > >> is the appropiate thing here > >> > >> Signed-off-by: Juan Quintela <quint...@redhat.com> > > > > BTW why not container_of? That one does not require > > field to be at the beginning of structure. > > VirtIO devices (and PCIDevices) are declared in this way: > > typedef struct VirtIOBalloon > { > VirtIODevice vdev; > VirtQueue *ivq, *dvq; > uint32_t num_pages; > uint32_t actual; > } VirtIOBalloon; > > > I.e. the virtioDevice is always the 1st element, otherwise things don't > work. There are code that requires it to be the 1st element.
I know. But I think we should slowly fix these assumptions, and not introduce more of them. IOW: don't use DO_UPCAST. > > Later, Juan.