WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] Re: [PATCH 1 of 3 V7] tools/libxc: introduce xc_memalign in

To: "rshriram@xxxxxxxxx" <rshriram@xxxxxxxxx>
Subject: [Xen-devel] Re: [PATCH 1 of 3 V7] tools/libxc: introduce xc_memalign in xc_{minios, linux, solaris, netbsd}.c
From: Ian Campbell <Ian.Campbell@xxxxxxxxxx>
Date: Tue, 15 Nov 2011 08:51:32 +0000
Cc: "brendan@xxxxxxxxx" <brendan@xxxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>, Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
Delivery-date: Tue, 15 Nov 2011 00:52:14 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <7e992e479411201fb9a0.1321311102@xxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Organization: Citrix Systems, Inc.
References: <patchbomb.1321311101@xxxxxxxxxxxxxxxxxxx> <7e992e479411201fb9a0.1321311102@xxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
On Mon, 2011-11-14 at 22:51 +0000, rshriram@xxxxxxxxx wrote:
> # HG changeset patch
> # User Shriram Rajagopalan <rshriram@xxxxxxxxx>
> # Date 1321309573 28800
> # Node ID 7e992e479411201fb9a0356f6f27966de7d48967
> # Parent  54a5e994a241a506900ee0e197bb42e5f1d8e759
> tools/libxc: introduce xc_memalign in xc_{minios,linux,solaris,netbsd}.c
> 
> Move (page aligned) buffer allocations in {os}_privcmd_alloc_hypercall_buffer
> into a global function xc_memalign. This API is also used by Remus
> compression code to allocate compression caches that need to be page aligned.
> 
> Signed-off-by: Shriram Rajagopalan <rshriram@xxxxxxxxx>
Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

> 
> diff -r 54a5e994a241 -r 7e992e479411 tools/libxc/xc_linux.c
> --- a/tools/libxc/xc_linux.c  Wed Nov 02 17:09:09 2011 +0000
> +++ b/tools/libxc/xc_linux.c  Mon Nov 14 14:26:13 2011 -0800
> @@ -55,6 +55,18 @@
>      errno = saved_errno;
>  }
>  
> +void *xc_memalign(xc_interface *xch, size_t alignment, size_t size)
> +{
> +    int ret;
> +    void *ptr;
> +
> +    ret = posix_memalign(&ptr, alignment, size);
> +    if (ret != 0 || !ptr)
> +        return NULL;
> +
> +    return ptr;
> +}
> +
>  /*
>   * Local variables:
>   * mode: C
> diff -r 54a5e994a241 -r 7e992e479411 tools/libxc/xc_linux_osdep.c
> --- a/tools/libxc/xc_linux_osdep.c    Wed Nov 02 17:09:09 2011 +0000
> +++ b/tools/libxc/xc_linux_osdep.c    Mon Nov 14 14:26:13 2011 -0800
> @@ -91,10 +91,9 @@
>  {
>      size_t size = npages * XC_PAGE_SIZE;
>      void *p;
> -    int ret;
>  
> -    ret = posix_memalign(&p, XC_PAGE_SIZE, size);
> -    if (ret != 0 || !p)
> +    p = xc_memalign(xch, XC_PAGE_SIZE, size);
> +    if (!p)
>          return NULL;
>  
>      if ( mlock(p, size) < 0 )
> diff -r 54a5e994a241 -r 7e992e479411 tools/libxc/xc_minios.c
> --- a/tools/libxc/xc_minios.c Wed Nov 02 17:09:09 2011 +0000
> +++ b/tools/libxc/xc_minios.c Mon Nov 14 14:26:13 2011 -0800
> @@ -73,7 +73,7 @@
>  
>  static void *minios_privcmd_alloc_hypercall_buffer(xc_interface *xch, 
> xc_osdep_handle h, int npages)
>  {
> -    return memalign(PAGE_SIZE, npages * PAGE_SIZE);
> +    return xc_memalign(xch, PAGE_SIZE, npages * PAGE_SIZE);
>  }
>  
>  static void minios_privcmd_free_hypercall_buffer(xc_interface *xch, 
> xc_osdep_handle h, void *ptr, int npages)
> @@ -437,6 +437,11 @@
>          fsync(fd);
>  }
>  
> +void *xc_memalign(xc_interface *xch, size_t alignment, size_t size)
> +{
> +    return memalign(alignment, size);
> +}
> +
>  static xc_osdep_handle minios_gnttab_open(xc_gnttab *xcg)
>  {
>      int fd = alloc_fd(FTYPE_GNTMAP);
> diff -r 54a5e994a241 -r 7e992e479411 tools/libxc/xc_netbsd.c
> --- a/tools/libxc/xc_netbsd.c Wed Nov 02 17:09:09 2011 +0000
> +++ b/tools/libxc/xc_netbsd.c Mon Nov 14 14:26:13 2011 -0800
> @@ -71,8 +71,9 @@
>  static void *netbsd_privcmd_alloc_hypercall_buffer(xc_interface *xch, 
> xc_osdep_handle h, int npages)
>  {
>      size_t size = npages * XC_PAGE_SIZE;
> -    void *p = valloc(size);
> +    void *p;
>  
> +    p = xc_memalign(xch, XC_PAGE_SIZE, size);
>      if (!p)
>          return NULL;
>  
> @@ -378,6 +379,11 @@
>      errno = saved_errno;
>  }
>  
> +void *xc_memalign(xc_interface *xch, size_t alignment, size_t size)
> +{
> +    return valloc(size);
> +}
> +
>  static struct xc_osdep_ops *netbsd_osdep_init(xc_interface *xch, enum 
> xc_osdep_type type)
>  {
>      switch ( type )
> diff -r 54a5e994a241 -r 7e992e479411 tools/libxc/xc_solaris.c
> --- a/tools/libxc/xc_solaris.c        Wed Nov 02 17:09:09 2011 +0000
> +++ b/tools/libxc/xc_solaris.c        Mon Nov 14 14:26:13 2011 -0800
> @@ -70,7 +70,7 @@
>  
>  static void *solaris_privcmd_alloc_hypercall_buffer(xc_interface *xch, 
> xc_osdep_handle h, int npages)
>  {
> -    return memalign(XC_PAGE_SIZE, npages * XC_PAGE_SIZE);
> +    return xc_memalign(xch, XC_PAGE_SIZE, npages * XC_PAGE_SIZE);
>  }
>  
>  static void solaris_privcmd_free_hypercall_buffer(xc_interface *xch, 
> xc_osdep_handle h, void *ptr, int npages)
> @@ -314,6 +314,11 @@
>      // TODO: Implement for Solaris!
>  }
>  
> +void *xc_memalign(xc_interface *xch, size_t alignment, size_t size)
> +{
> +    return memalign(alignment, size);
> +}
> +
>  static struct xc_osdep_ops *solaris_osdep_init(xc_interface *xch, enum 
> xc_osdep_type type)
>  {
>      switch ( type )
> diff -r 54a5e994a241 -r 7e992e479411 tools/libxc/xenctrl.h
> --- a/tools/libxc/xenctrl.h   Wed Nov 02 17:09:09 2011 +0000
> +++ b/tools/libxc/xenctrl.h   Mon Nov 14 14:26:13 2011 -0800
> @@ -1129,6 +1129,8 @@
>                        uint64_t *time,
>                        xc_hypercall_buffer_t *data);
>  
> +void *xc_memalign(xc_interface *xch, size_t alignment, size_t size);
> +
>  /**
>   * Memory maps a range within one domain to a local address range.  Mappings
>   * should be unmapped with munmap and should follow the same rules as mmap



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel