[U-Boot] [PATCH v6] [RFC] early_malloc for DM added.
Tomas Hlavacek
tmshlvck at gmail.com
Sun Sep 23 17:30:44 CEST 2012
Hello!
On Sun, Sep 23, 2012 at 3:06 PM, Graeme Russ <graeme.russ at gmail.com> wrote:
>
> On Sep 23, 2012 8:09 AM, "Tomas Hlavacek" <tmshlvck at gmail.com> wrote:
>>
>> early_malloc for DM with support for more heaps and lightweight
>> first heap in the same memory as an early stack.
>>
>> Adaptation layer for seamless calling of early_malloc or dlmalloc from
>> DM based on init stage added (dmmalloc() and related functions).
>>
>> Signed-off-by: Tomas Hlavacek <tmshlvck at gmail.com>
>> ---
>
> [snip]
>
>> +#ifdef CONFIG_SYS_EARLY_MALLOC
>> +__weak struct early_heap_header *early_brk(size_t size)
>> +{
>> + struct early_heap_header *h =
>> + (struct early_heap_header *)CONFIG_SYS_EARLY_HEAP_ADDR;
>> + struct early_heap_header *ehp = gd->early_heap_first;
>> +
>> + while (ehp != NULL) {
>> + if (ehp == h)
>> + return NULL;
>> +
>> + ehp = ehp->next_early_heap;
>> + }
>
> if (g->early_heap_first == NULL)
> h = CONFIF_SYS_EARLY_HEAP_ADDR);
> else
> return NULL;
Yes, I was too paranoid. What about:
if (g->early_heap_first != NULL)
return NULL;
>
>> +
>> + h->free_space_pointer = (void *)(roundup(
>> + (phys_addr_t)CONFIG_SYS_EARLY_HEAP_ADDR +
>> + sizeof(struct early_heap_header),
>> + sizeof(phys_addr_t)));
>> + h->free_bytes = size - roundup(sizeof(struct early_heap_header),
>> + sizeof(phys_addr_t));
>> + h->next_early_heap = NULL;
>> +
>> + return h;
>> +}
>
Tomas
More information about the U-Boot
mailing list