xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: "Egger, Christoph" <chegger@amazon.de>
To: Frediano Ziglio <frediano.ziglio@citrix.com>
Cc: Miguel Clara <miguelmclara@gmail.com>,
	Ian Campbell <Ian.Campbell@citrix.com>,
	Frediano Ziglio <frediano.ziglio@citrite.net>,
	xen-devel <xen-devel@lists.xen.org>
Subject: Re: [PATCH] tools/misc/xencov.c: Use MAP_WIRED on NetBSD
Date: Thu, 13 Jun 2013 11:47:02 +0200	[thread overview]
Message-ID: <51B99516.60001@amazon.de> (raw)
In-Reply-To: <1371038547.26497.4.camel@hamster.uk.xensource.com>

On 12.06.13 14:02, Frediano Ziglio wrote:
> Subject: [PATCH] gcov: Do not use mmap directly but use xc_hypercall_buffer_alloc
> 
> xencov.c did not compile on NetBSD so use xc_hypercall_buffer which is
> more portable.
> 
> Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com>

Acked-by: Christoph Egger <chegger@amazon.de>

> ---
>  tools/misc/xencov.c |   22 +++++++++-------------
>  1 file changed, 9 insertions(+), 13 deletions(-)
> 
> Here you are. It get tested on a x64 machine, if somebody could test it
> with a NetBSD would be great.
> 
> diff --git a/tools/misc/xencov.c b/tools/misc/xencov.c
> index 6645a30..fb4b2ff 100644
> --- a/tools/misc/xencov.c
> +++ b/tools/misc/xencov.c
> @@ -24,7 +24,6 @@
>  #include <unistd.h>
>  #include <errno.h>
>  #include <err.h>
> -#include <sys/mman.h>
>  
>  static xc_interface *gcov_xch = NULL;
>  
> @@ -35,16 +34,17 @@ static void gcov_init(void)
>          err(1, "opening interface");
>  }
>  
> -int gcov_get_info(int op, struct xen_sysctl *sys, void *ptr)
> +int gcov_get_info(int op, struct xen_sysctl *sys, struct xc_hypercall_buffer *ptr)
>  {
>      struct xen_sysctl_coverage_op *cov;
> +    DECLARE_HYPERCALL_BUFFER_ARGUMENT(ptr);
>  
>      memset(sys, 0, sizeof(*sys));
>      sys->cmd = XEN_SYSCTL_coverage_op;
>  
>      cov = &sys->u.coverage_op;
>      cov->cmd = op;
> -    cov->u.raw_info.p = ptr;
> +    set_xen_guest_handle(cov->u.raw_info, ptr);
>  
>      return xc_sysctl(gcov_xch, sys);
>  }
> @@ -52,10 +52,8 @@ int gcov_get_info(int op, struct xen_sysctl *sys, void *ptr)
>  static void gcov_read(const char *fn, int reset)
>  {
>      struct xen_sysctl sys;
> -    unsigned page_size = sysconf(_SC_PAGESIZE);
>      uint32_t total_len;
> -    uint8_t *p;
> -    size_t size;
> +    DECLARE_HYPERCALL_BUFFER(uint8_t, p);
>      FILE *f;
>      int op = reset ? XEN_SYSCTL_COVERAGE_read_and_reset :
>                       XEN_SYSCTL_COVERAGE_read;
> @@ -71,16 +69,13 @@ static void gcov_read(const char *fn, int reset)
>          errx(1, "coverage size too big %u bytes\n", total_len);
>  
>      /* allocate */
> -    size = total_len + page_size;
> -    size -= (size % page_size);
> -    p = mmap(0, size, PROT_WRITE|PROT_READ,
> -             MAP_PRIVATE|MAP_ANON|MAP_LOCKED, -1, 0);
> -    if ( p == (uint8_t *) -1 )
> -        err(1, "mapping memory for coverage");
> +    p = xc_hypercall_buffer_alloc(gcov_xch, p, total_len);
> +    if ( p == NULL )
> +        err(1, "allocating memory for coverage");
>  
>      /* get data */
>      memset(p, 0, total_len);
> -    if ( gcov_get_info(op, &sys, p) < 0 )
> +    if ( gcov_get_info(op, &sys, HYPERCALL_BUFFER(p)) < 0 )
>          err(1, "getting coverage information");
>  
>      /* write to a file */
> @@ -94,6 +89,7 @@ static void gcov_read(const char *fn, int reset)
>          err(1, "writing coverage to file");
>      if (f != stdout)
>          fclose(f);
> +    xc_hypercall_buffer_free(gcov_xch, p);
>  }
>  
>  static void gcov_reset(void)
> 

      parent reply	other threads:[~2013-06-13  9:47 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-30 12:46 [PATCH] tools/misc/xencov.c: Use MAP_WIRED on NetBSD Christoph Egger
2013-05-31 11:25 ` Ian Campbell
2013-06-11 13:46   ` Frediano Ziglio
2013-06-12  9:21     ` Ian Campbell
2013-06-12 12:02       ` Frediano Ziglio
2013-06-12 12:14         ` Ian Campbell
2013-06-12 13:13           ` George Dunlap
2013-06-12 13:16             ` Ian Campbell
2013-06-12 15:25             ` Frediano Ziglio
2013-06-27 11:31             ` Ian Campbell
2013-06-13  9:47         ` Egger, Christoph [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51B99516.60001@amazon.de \
    --to=chegger@amazon.de \
    --cc=Ian.Campbell@citrix.com \
    --cc=frediano.ziglio@citrite.net \
    --cc=frediano.ziglio@citrix.com \
    --cc=miguelmclara@gmail.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).