From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: Re: [PATCH] tools/misc/xencov.c: Use MAP_WIRED on NetBSD Date: Fri, 31 May 2013 12:25:19 +0100 Message-ID: <1369999519.5199.99.camel@zakaz.uk.xensource.com> References: <51A74A37.5070502@amazon.de> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <51A74A37.5070502@amazon.de> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Christoph Egger Cc: Frediano Ziglio , Miguel Clara , xen-devel List-Id: xen-devel@lists.xenproject.org On Thu, 2013-05-30 at 14:46 +0200, Christoph Egger wrote: > tools/xencov: MAP_LOCKED is Linux specific. NetBSD's equivalent is MAP_WIRED. It looks to me as if xencov.c's shouldn't be using mmap in the first place. It should be using the libxc hypercall buffer code. I think xencov.c should be using xc_hypercall_buffer_alloc(_pages) and gcov_get_info should be xc_gcov_get_info & inside libxc not open coded in this tool. Not least because of its abuse of the GUEST_HANDLE interface (going directly at .p instead of using xen_set_guest_handle(), which is forbidden). Frediano, do you have time to sort this out? NB On Linux the hypercall buffers currently turn into MAP_PRIVATE| MAP_ANONYMOUS|MAP_LOCKED but on netbsd it is just xc_memalign. Presumably netbsd doesn't have to worry about the hypercall buffer being unmapped/swapped/paged/etc under its feet? Or if it does it needs to be fixed in libxc... Thanks, Ian. > From: Miguel Clara > Signed-off-by: Christoph Egger > > diff -r f1fa13daf4b7 -r 97a4f7e36a8f tools/misc/xencov.c > --- a/tools/misc/xencov.c Fri May 10 13:45:02 2013 +0000 > +++ b/tools/misc/xencov.c Thu May 30 12:40:13 2013 +0000 > @@ -26,6 +26,11 @@ > #include > #include > > +#ifdef __NetBSD__ > +/* MAP_LOCKED is Linux specific. MAP_WIRED is NetBSD's equivalent. */ > +#define MAP_LOCKED MAP_WIRED > +#endif > + > static xc_interface *gcov_xch = NULL; > > static void gcov_init(void)