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

Re: [PATCH 10/24] Make libs/evtchn build on NetBSD


  • To: Manuel Bouyer <bouyer@xxxxxxxxxxxxxxx>
  • From: Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Date: Mon, 11 Jan 2021 18:22:39 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HqxyMtMyu9iia4auKNo85ZpxohX8xv6XCEqCepSlv8o=; b=TyuUBqi5UOpDepTFiC8VO8d95NEBU8fUEwgUAr2NZJFVK1yzBMb8RkMVIa3pg961JzBDo1kF2O8iA1IkzLP9WZNey/Y0nVLtS/I4EZ1oqvuXeuzs68IHelAoGdTraxi2PTlo9LciSMowkTawVngIDdMFcCrO+gYmFbuacje9KOWIq6R4c0DFaIU05/Y+Cx+GsgjEcs9q9Rr1gl2WNQh8vGMxO6ca6eCjILGf1Hexiu3vvcZQNrUcWxdw6iIyYi5uyAcZ2OxwXPZ6eNtdhAbD/2rG+djLh/8HGLJaGlM306yzmajMO0eMkYhjvskuM7EvpNj1pA6IKGKmgECGeYdwvw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kpOj4iIwoMe4t9cO3xkptFcqMUk+s3n3NRKD+KnQhLgBGiSQvdYlpnlttapMTeCAs80HjxMB7LJqpSZwNkA6qCGSajND63L89CY0zNdgXno1QYugQn12iiqeGKNY9j1RElbz8adK+4Xi/ZFw2e0Vn2RQZ1CsKBkBkX3J30yDn0eX0BVpxg8VJ+zBuxeORDIH+Wy/GULBKPXW+aKXjDz+HfXA7ahiS0V0VNGI23VNbfsmlAOQXWzGRl5FY7WjUXX27lv+YCIwHwH1wmCntV38eJRakGiC4FRSlldK4DIC2bmq14ChmDgQ9Xk7fpyodOAnG8cXmSILXdcoy0Qb4e2eLA==
  • Authentication-results: esa2.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Mon, 11 Jan 2021 17:23:00 +0000
  • Ironport-sdr: 4PzMZ1dDKve8zOA6xc+PD/G8Fwhg+KzyFx5b3kkaH4S5hqslRhmTmHwhDtUEbaehA5qRtq8ZTP 5jvhNCrNVEAqhzQhdNa0QRcSOkR/lhiU6y7XCWx1MU4vpV2DTumH5GM13EpE8Z6Jocy/4WB53C A5p1xdda0nGU4m6plwacBGvsoKUD58oIOkTV/GPUuQXHA0GMYogLn/LdxVOhhQAPQkpnX0PDgE Q1YrQAgyuP0ZRdX3Lafwa2s6PIlw48M+CGrdQtFofPPMgOr3Sya0nHTiPDchu7qUvqmCj5rgcv AUw=
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On Sun, Jan 10, 2021 at 01:22:50PM +0100, Manuel Bouyer wrote:
> On Mon, Jan 04, 2021 at 06:15:24PM +0100, Roger Pau Monné wrote:
> > On Mon, Jan 04, 2021 at 11:26:45AM +0100, Manuel Bouyer wrote:
> > > On Tue, Dec 29, 2020 at 12:52:43PM +0100, Roger Pau Monné wrote:
> > > > On Mon, Dec 14, 2020 at 05:36:09PM +0100, Manuel Bouyer wrote:
> > > > > ---
> > > > >  tools/libs/evtchn/netbsd.c | 8 ++++----
> > > > >  1 file changed, 4 insertions(+), 4 deletions(-)
> > > > > 
> > > > > diff --git a/tools/libs/evtchn/netbsd.c b/tools/libs/evtchn/netbsd.c
> > > > > index 8b8545d2f9..6d4ce28011 100644
> > > > > --- a/tools/libs/evtchn/netbsd.c
> > > > > +++ b/tools/libs/evtchn/netbsd.c
> > > > > @@ -25,10 +25,10 @@
> > > > >  
> > > > >  #include <sys/ioctl.h>
> > > > >  
> > > > > -#include <xen/sys/evtchn.h>
> > > > > -
> > > > >  #include "private.h"
> > > > >  
> > > > > +#include <xen/xenio3.h>
> > > > > +
> > > > >  #define EVTCHN_DEV_NAME  "/dev/xenevt"
> > > > >  
> > > > >  int osdep_evtchn_open(xenevtchn_handle *xce)
> > > > > @@ -131,7 +131,7 @@ xenevtchn_port_or_error_t 
> > > > > xenevtchn_pending(xenevtchn_handle *xce)
> > > > >      int fd = xce->fd;
> > > > >      evtchn_port_t port;
> > > > >  
> > > > > -    if ( read_exact(fd, (char *)&port, sizeof(port)) == -1 )
> > > > > +    if ( read(fd, (char *)&port, sizeof(port)) == -1 )
> > > > >          return -1;
> > > > >  
> > > > >      return port;
> > > > > @@ -140,7 +140,7 @@ xenevtchn_port_or_error_t 
> > > > > xenevtchn_pending(xenevtchn_handle *xce)
> > > > >  int xenevtchn_unmask(xenevtchn_handle *xce, evtchn_port_t port)
> > > > >  {
> > > > >      int fd = xce->fd;
> > > > > -    return write_exact(fd, (char *)&port, sizeof(port));
> > > > > +    return write(fd, (char *)&port, sizeof(port));
> > > > 
> > > > I'm afraid we will need some context as to why {read/write}_exact
> > > > doesn't work here.
> > > 
> > > It just doesn't exists on NetBSD
> > 
> > But those are not part of libc or any external library, they are
> > implemented in tools/libs/ctrl/xc_private.c and should be available to
> > the NetBSD build AFAICT.
> > 
> > They are just helpers build on top of the standard read/write calls.
> 
> Yes, I misremembered (I have this patch for a long time, since 4.11 at last,
> maybe even older).
> Anyway the build fails with:
> netbsd.c: In function 'xenevtchn_pending':
> netbsd.c:134:10: error: implicit declaration of function 'read_exact'; did 
> you mean 'readlinkat'? [-Werror=implicit-function-declaration]
> 
> The only header where I see this function defined is
> tools/libs/ctrl/xc_private.h, so I would need something like
> #include "../../ctrl/xc_private.h"
> but this doesn't look right.
> 
> I didn't find where other OSes are getting the prototype from (or maybe
> they just have this -Werror turned off ?)
> 
> Anyway I think NetBSD doesn't need this read_exact/write_exact thing,
> the underlying pseudo-device won't to partial read/write.

The usage of {read/write}_exact there is indeed a mistake, when the
evtchn library was split from libxc no one realized that the
{read/write}_exact where no longer available to that code.

Could you please add:

Fixes: b7f76a699dc ('tools: Refactor /dev/xen/evtchn wrappers into 
libxenevtchn.')

To the commit message?

And also:

Reviewed-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>

Thanks, Roger.



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.