|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 1/4] xen/dmalloc: Introduce dmalloc() APIs
On 23.12.2020 17:34, Andrew Cooper wrote:
> RFC:
> * This probably wants to be less fatal in release builds
I'm not even convinced this wants to be a panic() in debug builds.
> * In an ideal world, we'd also want to count the total number of bytes
> allocated from the xmalloc heap, which would be interesting to print in the
> 'q' debugkey. However, that data is fairly invasive to obtain.
Unless we used an xmem_pool rather than the new interface being
a thin layer around xmalloc(). (This would then also provide
better locality of the allocations, i.e. different domains
wouldn't share allocations from the same page.) And even without
doing so, adding a function to retrieve the actual size
shouldn't be all that difficult - internally xmalloc_tlsf.c
knows the size, after all, for e.g. xrealloc() to work right.
> --- /dev/null
> +++ b/xen/include/xen/dmalloc.h
> @@ -0,0 +1,29 @@
> +#ifndef XEN_DMALLOC_H
> +#define XEN_DMALLOC_H
> +
> +#include <xen/types.h>
> +
> +struct domain;
> +
> +#define dzalloc_array(d, _type, _num) \
While I realize I'll get bashed again, the inconsistency of using
(or not) leading underscores is too odd to not comment upon. I
don't see what use they are here, irrespective of my general view
on the topic.
> + ((_type *)_dzalloc_array(d, sizeof(_type), __alignof__(_type), _num))
> +
> +
> +void dfree(struct domain *d, void *ptr);
May I ask to avoid double blank lines?
> +#define DFREE(d, p) \
> + do { \
> + dfree(d, p); \
> + (p) = NULL; \
> + } while ( 0 )
> +
> +
> +void *_dzalloc(struct domain *d, size_t size, size_t align);
> +
> +static inline void *_dzalloc_array(struct domain *d, size_t size,
> + size_t align, size_t num)
> +{
> + return _dzalloc(d, size * num, align);
No protection at all against the multiplication overflowing?
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |