# OS_SetIrqMask

## C Specification

  `#include <nitro/os.h>`
  `OSIrqMask OS_SetIrqMask( OSIrqMask intr );`

## Description

Sets the IRQ interrupt cause

When the IRQ interrupt master enable is enabled with `OS_EnableIrq`, only IRQ interrupts corresponding to those enabled with this function will occur.

The `intr` argument is displayed as the logical OR of the following causes:

`OS_IE_V_BLANK` | V-Blank interrupt
`OS_IE_H_BLANK` | H-Blank interrupt
`OS_IE_V_COUNT` | V-Counter interrupt
`OS_IE_TIMER0` | Timer 0 interrupt
`OS_IE_TIMER1` | Timer 1 interrupt
`OS_IE_TIMER2` | Timer 2 interrupt
`OS_IE_TIMER3` | Timer 3 interrupt
`OS_IE_DMA0` | DMA0 interrupt
`OS_IE_DMA1` | DMA1 interrupt
`OS_IE_DMA2` | DMA2 interrupt
`OS_IE_DMA3` | DMA3 interrupt
`OS_IE_KEY` | Key interrupt
`OS_IE_CARtrIDGE` | Game Pak IREQ/DREQ interrupt
`OS_IE_SUBP` | ARM7 interrupt
`OS_IE_SPFIFO_SEND` | Send FIFO empty interrupt between the ARM9 and ARM7
`OS_IE_SPFIFO_RECV` | Receive FIFO not empty interrupt between the ARM9 and ARM7
`OS_IE_CARD_DATA` | Card data transmission complete interrupt
`OS_IE_CARD_IREQ` | Card IREQ interrupt
`OS_IE_GXFIFO` | Geometry command FIFO interrupt

> Example:

>     // If there is a V-Blank interrupt, enable the DMA0 interrupt.
>     OS_SetIrqMask( OS_IE_V_BLANK | OS_IE_DMA0 );

>     // IRQ master enable
>     OS_EnableIrq();

Note: `OS_SetIrqMask()` is a function that overwrites and sets IRQ interrupt causes, and not a function to add specified causes. Since some interrupt causes are set by system, do not overwrite settings needlessly. For example, because tick and alarm use a timer interrupt, IRQ interrupt cause for the applicable timer must be enabled. Use `OS_EnableIrqMask()` when adding IRQ interrupts to the previous settings.

## Internal Operation

Operates one IO register, the IE (Interrupt Enable) register.

## Arguments

`intr` | The IRQ interrupt cause to be set.

## Return Value

The setting of the IRQ interrupt cause before this function is called.

## See Also

`OS_GetIrqMask`, `OS_EnableIrqMask`, `OS_DisableIrqMask`

## Revision History

11/24/2004 Deleted `OS_IE_SIO`
09/01/2004 Changed "subprocessor" to "ARM7" and "between subprocessors" to "between ARM9 and ARM7."
03/12/2004 Emphasized the difference from `OS_EnableIrqMask`
12/01/2003 Initial version