From 79431f5f09fa9505303e37d6b1c393dce20b4e23 Mon Sep 17 00:00:00 2001 From: "Ronald G. Minnich" Date: Thu, 31 May 2012 16:02:26 -0700 Subject: [PATCH] Make memalign print useful messages on failure Brevity is the soul of wit, except for error messages; then it's a sign of witlessness. I can say this because this error message may be my fault, although it is lost in the 20th century code base so who knows. Anyway, when memalign dies, it's not a bad idea to have a lot of information about what went wrong. So instead of the terse single bit of "something failed" this patch changes things to be a bit more useful. Change-Id: I8851502297e0ae9773912839ebfdf4f9574c8087 Signed-off-by: Ronald G. Minnich Reviewed-on: http://review.coreboot.org/1270 Reviewed-by: Ronald G. Minnich Tested-by: build bot (Jenkins) --- src/lib/malloc.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/lib/malloc.c b/src/lib/malloc.c index 2e700f78e5..4115738f20 100644 --- a/src/lib/malloc.c +++ b/src/lib/malloc.c @@ -18,7 +18,7 @@ void *memalign(size_t boundary, size_t size) { void *p; - MALLOCDBG("%s Enter, boundary %ld, size %ld, free_mem_ptr %p\n", + MALLOCDBG("%s Enter, boundary %zu, size %zu, free_mem_ptr %p\n", __func__, boundary, size, free_mem_ptr); /* Overzealous linker check */ @@ -30,8 +30,15 @@ void *memalign(size_t boundary, size_t size) p = free_mem_ptr; free_mem_ptr += size; - if (free_mem_ptr >= free_mem_end_ptr) + if (free_mem_ptr >= free_mem_end_ptr) { + printk(BIOS_ERR, "memalign(boundary=%zu, size=%zu): failed: ", + boundary, size); + printk(BIOS_ERR, "Tried to round up free_mem_ptr %p to %p\n", + p, free_mem_ptr); + printk(BIOS_ERR, "but free_mem_end_ptr is %p\n", + free_mem_end_ptr); die("Error! memalign: Out of memory (free_mem_ptr >= free_mem_end_ptr)"); + } MALLOCDBG("memalign %p\n", p);