From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36851) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZcDHI-0000oj-Ib for qemu-devel@nongnu.org; Wed, 16 Sep 2015 10:01:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZcDHC-00006x-Mv for qemu-devel@nongnu.org; Wed, 16 Sep 2015 10:01:40 -0400 Received: from mx1.redhat.com ([209.132.183.28]:58878) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZcDHC-00006m-Ha for qemu-devel@nongnu.org; Wed, 16 Sep 2015 10:01:34 -0400 Date: Wed, 16 Sep 2015 17:01:18 +0300 From: "Michael S. Tsirkin" Message-ID: <20150916170000-mutt-send-email-mst@redhat.com> References: <1438864852-4939-1-git-send-email-marcandre.lureau@redhat.com> <1438864852-4939-7-git-send-email-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: <1438864852-4939-7-git-send-email-marcandre.lureau@redhat.com> Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v3 06/16] vhost: use variable arguments for vhost_call() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: marcandre.lureau@redhat.com Cc: haifeng.lin@huawei.com, thibaut.collet@6wind.com, jasowang@redhat.com, qemu-devel@nongnu.org, pbonzini@redhat.com On Thu, Aug 06, 2015 at 02:40:42PM +0200, marcandre.lureau@redhat.com wro= te: > From: Marc-Andr=E9 Lureau >=20 > It is useful to pass extra arguments to the funtions, for > various backend needs. >=20 > Signed-off-by: Marc-Andr=E9 Lureau 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(-) >=20 > 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 @@ > =20 > #include > =20 > -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 =3D (uintptr_t) dev->opaque; > =20 > 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; > } > =20 > -static int vhost_user_call(struct vhost_dev *dev, unsigned long int re= quest, > - 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/vhos= t-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_ > =20 > +#include > + > typedef enum VhostBackendType { > VHOST_BACKEND_TYPE_NONE =3D 0, > VHOST_BACKEND_TYPE_KERNEL =3D 1, > @@ -20,8 +22,8 @@ typedef enum VhostBackendType { > =20 > struct vhost_dev; > =20 > -typedef int (*vhost_call)(struct vhost_dev *dev, unsigned long int req= uest, > - 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); > =20 > --=20 > 2.4.3