# OS_AllocFrom*ArenaHi

## 構文

      #include <nitro/os.h>

      void* OS_AllocFromArenaHi( OSArenaId id, u32 size, u32 alignment );

      void* OS_AllocFromMainArenaHi( u32 size, u32 alignment );
      void* OS_AllocFromSubArenaHi( u32 size, u32 alignment );
      void* OS_AllocFromMainExArenaHi( u32 size, u32 alignment );
      void* OS_AllocFromITCMArenaHi( u32 size, u32 alignment );
      void* OS_AllocFromDTCMArenaHi( u32 size, u32 alignment );
      void* OS_AllocFromSharedArenaHi( u32 size, u32 alignment );
      void* OS_AllocFromWramMainArenaHi( u32 size, u32 alignment );
      void* OS_AllocFromWramSubArenaHi( u32 size, u32 alignment );
      void* OS_AllocFromWramSubPrivArenaHi( u32 size, u32 alignment );

## 引数

id | アリーナID
size | 確保する大きさ(サイズ)
alignment | 領域の先頭アドレスのアラインメント指定

## 返り値

確保した領域の先頭アドレスです。

## 説明

アリーナの上位から領域を確保します。
id はアリーナIDでアリーナを指定します。アリーナIDについては OS_InitArena() を参照してください。
size は確保する大きさで、バイトで指定します。
alignment は確保する領域のアラインメント指定です。
領域を確保した後に、アリーナの上位境界アドレスが領域を取った分だけ変化します。
下位方向の境界チェックは行なっていませんので、アリーナの大きさ以上に領域を確保すると不具合が発生します。

OS_AllocFromMainArenaHi は OS_AllocFromArenaHi( OS_ARENA_MAIN, … ) の inline です。
OS_AllocFromSubPrivArenaHi は OS_AllocFromArenaHi( OS_ARENA_MAIN_SUBPRIV, … ) の inline です。
OS_AllocFromMainExArenaHi は OS_AllocFromArenaHi( OS_ARENA_MAINEX, … ) の inline です。
OS_AllocFromITCMArenaHi は OS_AllocFromArenaHi( OS_ARENA_ITCM, … ) の inline です。
OS_AllocFromDTCMArenaHiは OS_AllocFromArenaHi( OS_ARENA_DTCM, … ) の inline です。
OS_AllocFromSharedArenaHi は OS_AllocFromArenaHi( OS_ARENA_SHARED, … ) の inline です。
OS_AllocFromWramMainArenaHi は OS_AllocFromArenaHi( OS_ARENA_WRAM, … ) の inline です。
OS_AllocFromWramSubArenaHi は OS_AllocFromArenaHi( OS_ARENA_WRAM, … ) の inline です。
OS_AllocFromWramSubPrivArenaHi は OS_AllocFromArenaHi( OS_ARENA_WRAM, … ) の inline です。

## 参照

`OS_InitArena, OS_AllocFromArenaLo
`

## 履歴

2004/02/19 アリーナが６→９個に
2004/01/06 初版