From: Paolo Bonzini <pbonzini@redhat.com>
To: Andrew Jones <drjones@redhat.com>,
kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org
Cc: christoffer.dall@linaro.org
Subject: Re: [PATCH v6 06/17] Introduce alloc_ops
Date: Fri, 11 Jul 2014 10:40:42 +0200 [thread overview]
Message-ID: <53BFA30A.6040602@redhat.com> (raw)
In-Reply-To: <1405066787-5793-7-git-send-email-drjones@redhat.com>
Il 11/07/2014 10:19, Andrew Jones ha scritto:
> alloc_ops provide interfaces for alloc(), free() and friends, allowing
> unit tests and common code to use dynamic memory allocation.
> arch-specific code must provide the implementations.
>
> Signed-off-by: Andrew Jones <drjones@redhat.com>
> ---
> lib/alloc.c | 2 ++
> lib/alloc.h | 31 +++++++++++++++++++++++++++++++
> 2 files changed, 33 insertions(+)
> create mode 100644 lib/alloc.c
> create mode 100644 lib/alloc.h
>
> diff --git a/lib/alloc.c b/lib/alloc.c
> new file mode 100644
> index 0000000000000..868664b4dcaa3
> --- /dev/null
> +++ b/lib/alloc.c
> @@ -0,0 +1,2 @@
> +#include "alloc.h"
> +struct alloc_ops alloc_ops;
> diff --git a/lib/alloc.h b/lib/alloc.h
> new file mode 100644
> index 0000000000000..c8cd61b387a9a
> --- /dev/null
> +++ b/lib/alloc.h
> @@ -0,0 +1,31 @@
> +#ifndef _ALLOC_H_
> +#define _ALLOC_H_
> +#include "libcflat.h"
> +
> +struct alloc_ops {
> + void *(*alloc)(size_t size);
> + void *(*alloc_aligned)(size_t size, size_t align);
> + void (*free)(const void *addr);
> +};
> +
> +extern struct alloc_ops alloc_ops;
> +
> +static inline void *alloc(size_t size)
> +{
> + assert(alloc_ops.alloc);
> + return alloc_ops.alloc(size);
> +}
> +
> +static inline void *alloc_aligned(size_t size, size_t align)
> +{
> + assert(alloc_ops.alloc_aligned);
> + return alloc_ops.alloc_aligned(size, align);
> +}
> +
> +static inline void free(const void *addr)
> +{
> + assert(alloc_ops.free);
> + alloc_ops.free(addr);
> +}
> +
> +#endif
>
Why do you need the wrappers? Could you just have lib/malloc.c define
the three functions, with interface in lib/stdlib.h and lib/memregion.h?
Also, please call them with the "right" C names:
void *malloc(size_t size);
void free(void *ptr);
void *calloc(size_t nmemb, size_t size);
void *memalign(size_t alignment, size_t size);
Only calloc should do the memset.
Later, x86 could also add a memregion_init call and be able to use
malloc/free.
Paolo
next prev parent reply other threads:[~2014-07-11 8:40 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-11 8:19 [PATCH v6 00/17] kvm-unit-tests/arm: initial drop Andrew Jones
2014-07-11 8:19 ` [PATCH v6 02/17] libfdt: get libfdt to build Andrew Jones
2014-07-11 8:19 ` [PATCH v6 03/17] add support for Linux device trees Andrew Jones
2014-07-11 8:19 ` [PATCH v6 04/17] libcflat: add abort() and assert() Andrew Jones
2014-07-11 8:19 ` [PATCH v6 05/17] Introduce asm-generic/*.h files Andrew Jones
2014-07-11 8:19 ` [PATCH v6 06/17] Introduce alloc_ops Andrew Jones
2014-07-11 8:40 ` Paolo Bonzini [this message]
2014-07-11 8:55 ` Andrew Jones
2014-07-11 9:41 ` Paolo Bonzini
2014-07-11 10:07 ` Andrew Jones
2014-07-11 10:12 ` Paolo Bonzini
2014-07-15 17:16 ` Andrew Jones
2014-07-11 8:19 ` [PATCH v6 07/17] add minimal virtio support for devtree virtio-mmio Andrew Jones
2014-07-11 8:32 ` Paolo Bonzini
2014-07-11 9:08 ` Andrew Jones
2014-07-11 9:27 ` Paolo Bonzini
2014-07-11 9:36 ` Andrew Jones
2014-07-15 17:22 ` Andrew Jones
2014-07-11 8:19 ` [PATCH v6 08/17] lib: add asm/page.h and virt_to_phys/phys_to_virt Andrew Jones
2014-07-11 8:19 ` [PATCH v6 09/17] virtio: add minimal support for virtqueues Andrew Jones
2014-07-11 9:23 ` Paolo Bonzini
2014-07-11 9:32 ` Paolo Bonzini
2014-07-11 9:52 ` Andrew Jones
2014-07-11 8:19 ` [PATCH v6 10/17] Introduce chr-testdev Andrew Jones
2014-07-11 8:19 ` [PATCH v6 11/17] libcflat: clean up libcflat.h Andrew Jones
2014-07-11 8:19 ` [PATCH v6 12/17] arm: initial drop Andrew Jones
2014-07-11 8:19 ` [PATCH v6 13/17] arm: Add spinlock implementation Andrew Jones
2014-07-11 8:19 ` [PATCH v6 14/17] arm: Add IO accessors to avoid register-writeback Andrew Jones
2014-07-11 8:19 ` [PATCH v6 15/17] arm: Add arch-specific asm/page.h and __va/__pa Andrew Jones
2014-07-11 8:19 ` [PATCH v6 16/17] arm: add useful headers from the Linux kernel Andrew Jones
2014-07-11 8:19 ` [PATCH v6 17/17] arm: vectors support Andrew Jones
2014-07-11 8:47 ` [PATCH v6 00/17] kvm-unit-tests/arm: initial drop Paolo Bonzini
2014-07-15 17:24 ` Andrew Jones
2014-07-15 20:19 ` Paolo Bonzini
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=53BFA30A.6040602@redhat.com \
--to=pbonzini@redhat.com \
--cc=christoffer.dall@linaro.org \
--cc=drjones@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.cs.columbia.edu \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.