# OS_Init

## C Specification

      #include <nitro/os.h>

      void OS_Init( void );

## Arguments

None.

## Return Values

None.

## Description

Initializes the system and performs the following actions:

> In the case of the ARM9 processor, this function: ( Initializes the arena (`OS_InitArena()`)( Initializes the communication system between preprocessors (`PXI_Init()`) (Initializes the lock system for the expanded main memory arena (`OS_InitLock()`)( Sets initial values for the arenas (`OS_InitArenaEx()`)( Embeds the IRQ stack check data. `OS_InitIrqTable()` )
> ( Initializes the IRQ interrupt tables (`OS_SetIrqStackChecker()`)( Initializes the exception display system (`OS_InitException()`)( Does MI-related initialization (`MI_Init()`)( Initializes the V-count alarm system (`OS_InitVAlarm()`)( Initializes the thread system (`OS_InitThread()`)(Initializes the reset system (`OS_InitReset()`)( Initializes the Game Pak library (`CTRDG_Init()`)( Initializes the Card library (`CARD_Init()`)( Initializes the power control system (`PM_Init()`)

> In the case of the ARM7 processor, this function: (`Initializes the arena (OS_InitArena()`)( Initializes the communication system between preprocessors (`PXI_Init()`) ( Initializes the lock system (`OS_InitLock()`)( Initializes the IRQ interrupt tables (`OS_InitIrqTable()`)( Initializes the exception display system (`OS_InitException()`)( Initializes the tick system (`OS_InitTick()`)( Initializes the alarm system (`OS_InitAlarm()`)( Initializes the thread system (`OS_InitThread()`)( Initializes the reset system (`OS_InitReset()`)( Initializes the Game Pak library (`CTRDG_Init()`)

This `OS_Init()` function is normally called at the beginning of an application when control is transferred to the user's `NitroMain()` function. Unless there is a special reason not to do so, call it first.

Tick system initialization and alarm system initialization are not performed on the ARM9's `OS_Init()`. If necessary, call `OS_InitTick()` and `OS_InitAlarm()` (in that order) after `OS_Init()`.

## See Also

`OS_InitThread, OS_InitArena, OS_InitIrqTable, OS_InitTick,
OS_InitVAlarm, OS_InitException, OS_InitLock, MI_Init,
PM_Init, OS_InitReset, CTRDG_Init, CARD_Init,
OS_InitTick, OS_InitAlarm, OS_SetIrqStackChecker`

## Revision History

2005/07/19 Added `OS_SetIrqStackChecker()`.
03/14/2005 Corrected mistake in link target.
02/09/2005 Added `MI_Init()` and added link to `OS_InitLock()`.
12/08/2004 Explained that `OS_Init()` is the first function that should be called.
09/27/2004 Added `CARD_Init()`.
09/15/2004 Made revisions.
08/09/2004 Made revisions.
02/19/2004 Made revisions.
12/24/2003 Initial version.