Keil Logo Arm Logo

__rt_heap_extend()

__rt_heap_extend()

Defined in rt_heap.h, this function returns a new eight-byte aligned block of memory to add to the heap, if possible. If you reimplement __rt_stackheap_init(), you must reimplement this function. An incomplete prototype implementation is in rt_memory.s.

This function is not part of the C library standard, but is supported by the ARM C library as an extension.

Show/hideSyntax

extern unsigned __rt_heap_extend(unsigned size, void **block);

Show/hideUsage

The calling convention is ordinary AAPCS. On entry, r0 is the minimum size of the block to add, and r1 holds a pointer to a location to store the base address.

The default implementation has the following characteristics:

  • The returned size is either:

    • a multiple of eight bytes of at least the requested size

    • 0, denoting that the request cannot be honored.

  • The returned base address is aligned on an eight-byte boundary.

  • Size is measured in bytes.

  • The function is subject only to ARM Architecture Procedure Call Standard (AAPCS) constraints.

Show/hideReturns

The default implementation extends the heap if there is sufficient free heap memory. If it cannot, it calls __user_heap_extend() if it is implemented. On exit, r0 is the size of the block acquired, or 0 if nothing could be obtained, and the memory location r1 pointed to on entry contains the base address of the block.

Copyright © 2011-2012 ARM. All rights reserved.ARM DUI 0589B
Non-ConfidentialID062912

Keil logo

Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.