4.50 __user_heap_extend()

rt_misc.h で定義される __user_heap_extend() 関数は、初期メモリブロックとは別の、ヒープによって使用されるメモリブロックを返すように定義できます。

定義されている場合は、8 バイトアライメントのヒープ拡張ブロックのサイズとベースアドレスを返す必要があります。

構文

extern unsigned __user_heap_extend(int var0, void **base, unsignedrequested_size);

使用法

この関数のデフォルトの実装はありません。この関数を定義する場合は、以下の条件を満たす必要があります。
  • 以下のいずれかの値が返されます。
    • AArch32 状態では、要求されたサイズ以上の 8 バイトの倍数。
    • AArch64 状態では、要求されたサイズ以上の 16 バイトの倍数。
    • 要求を満たせない場合は 0。
  • 返されるベースアドレスは以下で整列されます。
    • AArch32 状態では、8 バイト境界。
    • AArch64 状態では、16 バイト境界。
  • サイズはバイト単位で処理されること。
  • この関数には ARM アーキテクチャ向けプロシージャコール標準(AAPCS)の制約条件のみが適用されます。
  • 最初の引数はエントリ時に常にゼロとなり、無視できること。ベースはこの引数を保持するレジスタに返されること。

戻り値

この関数は、要求されたサイズまたはそれより大きいブロックへのポインタを *base に設定して、そのブロックのサイズを返します。条件に一致するブロックを返せない場合は、0 が返されます。この場合、*base に格納された値は使用されません。
関連する概念
1.11.3 スタックポインタの初期化とヒープの上下限
関連する参考文書
4.25 __rt_heap_extend()
4.29 __rt_stackheap_init()
4.51 __user_heap_extent()
4.52 __user_setup_stackheap()
関連情報
『Procedure Call Standard for the ARM Architecture』
非機密扱いPDF file icon PDF 版ARM DUI0808CJ
Copyright © 2014, 2015 ARM.All rights reserved.