mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
Mini-OS: Fix alignment in maybe_split()
Needed on ia64, speeds up on x86. Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
This commit is contained in:
1 parent
f280af038a
commit
fdbcfd71bb
1 file changed
+10
-7
@@ -62,10 +62,19 @@ struct xmalloc_pad
|
||||
size_t hdr_size;
|
||||
};
|
||||
|
||||
/* Return size, increased to alignment with align. */
|
||||
static inline size_t align_up(size_t size, size_t align)
|
||||
{
|
||||
return (size + align - 1) & ~(align - 1);
|
||||
}
|
||||
|
||||
static void maybe_split(struct xmalloc_hdr *hdr, size_t size, size_t block)
|
||||
{
|
||||
struct xmalloc_hdr *extra;
|
||||
size_t leftover = block - size;
|
||||
size_t leftover;
|
||||
size = align_up(size, __alignof__(struct xmalloc_hdr));
|
||||
size = align_up(size, __alignof__(struct xmalloc_pad));
|
||||
leftover = block - size;
|
||||
|
||||
/* If enough is left to make a block, put it on free list. */
|
||||
if ( leftover >= (2 * (sizeof(struct xmalloc_hdr) + sizeof(struct xmalloc_pad))) )
|
||||
@@ -100,12 +109,6 @@ static struct xmalloc_hdr *xmalloc_new_page(size_t size)
|
||||
return hdr;
|
||||
}
|
||||
|
||||
/* Return size, increased to alignment with align. */
|
||||
static inline size_t align_up(size_t size, size_t align)
|
||||
{
|
||||
return (size + align - 1) & ~(align - 1);
|
||||
}
|
||||
|
||||
/* Big object? Just use the page allocator. */
|
||||
static void *xmalloc_whole_pages(size_t size, size_t align)
|
||||
{
|
||||
|
||||