On Thu, Aug 06, 2015 at 02:40:42PM +0200, marcandre.lur...@redhat.com wrote: > From: Marc-André Lureau <marcandre.lur...@redhat.com> > > It is useful to pass extra arguments to the funtions, for > various backend needs. > > Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com>
Let's not do this. It's probably time to replace vhost_call with an ops struct of functions. This will solve this in a clean way. > --- > hw/virtio/vhost-backend.c | 4 ++-- > hw/virtio/vhost-user.c | 4 ++-- > include/hw/virtio/vhost-backend.h | 6 ++++-- > 3 files changed, 8 insertions(+), 6 deletions(-) > > diff --git a/hw/virtio/vhost-backend.c b/hw/virtio/vhost-backend.c > index 4d68a27..7255089 100644 > --- a/hw/virtio/vhost-backend.c > +++ b/hw/virtio/vhost-backend.c > @@ -14,8 +14,8 @@ > > #include <sys/ioctl.h> > > -static int vhost_kernel_call(struct vhost_dev *dev, unsigned long int > request, > - void *arg) > +static int vhost_kernel_call(struct vhost_dev *dev, > + unsigned long int request, void *arg, ...) > { > int fd = (uintptr_t) dev->opaque; > > diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c > index 4993b63..8b6d7e7 100644 > --- a/hw/virtio/vhost-user.c > +++ b/hw/virtio/vhost-user.c > @@ -190,8 +190,8 @@ static int vhost_user_write(struct vhost_dev *dev, > VhostUserMsg *msg, > 0 : -1; > } > > -static int vhost_user_call(struct vhost_dev *dev, unsigned long int request, > - void *arg) > +static int vhost_user_call(struct vhost_dev *dev, > + unsigned long int request, void *arg, ...) > { > VhostUserMsg msg; > VhostUserRequest msg_request; > diff --git a/include/hw/virtio/vhost-backend.h > b/include/hw/virtio/vhost-backend.h > index e472f29..36fa0f7 100644 > --- a/include/hw/virtio/vhost-backend.h > +++ b/include/hw/virtio/vhost-backend.h > @@ -11,6 +11,8 @@ > #ifndef VHOST_BACKEND_H_ > #define VHOST_BACKEND_H_ > > +#include <stdarg.h> > + > typedef enum VhostBackendType { > VHOST_BACKEND_TYPE_NONE = 0, > VHOST_BACKEND_TYPE_KERNEL = 1, > @@ -20,8 +22,8 @@ typedef enum VhostBackendType { > > struct vhost_dev; > > -typedef int (*vhost_call)(struct vhost_dev *dev, unsigned long int request, > - void *arg); > +typedef int (*vhost_call)(struct vhost_dev *dev, > + unsigned long int request, void *arg, ...); > typedef int (*vhost_backend_init)(struct vhost_dev *dev, void *opaque); > typedef int (*vhost_backend_cleanup)(struct vhost_dev *dev); > > -- > 2.4.3