

#include <nitro/os.h>
void* OS_AllocFromHeap( OSArenaId id, OSHeapHandle heap, u32 size );
void* OS_AllocFromMain( u32 size );
void* OS_AllocFromSubPriv( u32 size );
void* OS_AllocFromMainEx( u32 size );
void* OS_AllocFromITCM( u32 size );
void* OS_AllocFromDTCM( u32 size );
void* OS_AllocFromShared( u32 size );
void* OS_AllocFromWramMain( u32 size );
void* OS_AllocFromWramSub( u32 size );
void* OS_AllocFromSubPrivWram( u32 size );
void* OS_Alloc( u32 size );
| id | 領域を確保するヒープのあるアリーナのアリーナID |
| heap | 領域を確保するヒープのハンドル |
| size | 確保したい領域のサイズ(バイト) |
領域を割り当てることが出来た場合、その領域の先頭アドレスを返します。
領域を割り当てることが出来なかった場合、NULL を返します。
ヒープからメモリブロックを割り当てます。
OS_AllocFromHeap() では割り当てるヒープのハンドルと、そのヒープのあるアリーナを指定する必要があります。アリーナはアリーナID
id で指定します。この値については OS_InitArena() を参照してください。
ヒープハンドルに OS_CURRENT_HEAP_HANDLE を指定すると、そのアリーナのカレントヒープが指定されたと見なします。
確保されるメモリ領域は、32 bytes にアライメントされています。
OS_AllocFromMain() は OS_AllocFromHeap( OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE, … ) の inline です。
OS_AllocFromSubPriv() は OS_AllocFromHeap( OS_ARENA_MAIN_SUBPRIV, OS_CURRENT_HEAP_HANDLE, … ) の inline です。
OS_AllocFromMainEx() は OS_AllocFromHeap( OS_ARENA_MAINEX, OS_CURRENT_HEAP_HANDLE, … ) の inline です。
OS_AllocFromICTM() は OS_AllocFromHeap( OS_ARENA_ITCM, OS_CURRENT_HEAP_HANDLE, … ) の inline です。
OS_AllocFromDTCM() は OS_AllocFromHeap( OS_ARENA_DTCM, OS_CURRENT_HEAP_HANDLE, … ) の inline です。
OS_AllocFromShared() は OS_AllocFromHeap( OS_ARENA_SHARED, OS_CURRENT_HEAP_HANDLE, … ) の inline です。
OS_AllocFromWramMain() は OS_AllocFromHeap( OS_ARENA_WRAM_MAIN, OS_CURRENT_HEAP_HANDLE, … ) の inline です。
OS_AllocFromWramSub() は OS_AllocFromHeap( OS_ARENA_WRAM_SUB, OS_CURRENT_HEAP_HANDLE, … ) の inline です。
OS_AllocFromSubPrivWram() は OS_AllocFromHeap( OS_ARENA_WRAM_SUBPRIV, OS_CURRENT_HEAP_HANDLE, … ) の inline です。
OS_Alloc() は ARM9では OS_AllocFromHeap( OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE, … ) の inline です。ARM7 では、OS_AllocFromHeap( OS_ARENA_MAIN_SUBPRIV, OS_CURRENT_HEAP_HANDLE, … ) の inline です。
(注意)
0バイトの領域を確保しようとした場合、DEBUG ビルドでは ASSERT で停止します。それ以外のビルドでは動作は不定です。
OS_DestroyHeap() で破棄したヒープに対して領域を確保しようとすると、DEBUG ビルドの場合はアサートで停止します。RELEASE/FINALROM
ビルドの場合は NULL を返します。
OS_InitArena, OS_InitAlloc, OS_CreateHeap, OS_FreeToHeap, OS_FreeAllToHeap
2004/07/07 サイズに0バイトを指定した場合の注意を追加
2004/03/08 ARM7 と ARM9 の違いを考慮
2004/02/25 アリーナの個数が6→9個に
2004/01/06 初版