mirror of
https://github.com/afska/gba-link-connection.git
synced 2026-10-02 05:47:11 -05:00
Adding developer notes about nested irqs
This commit is contained in:
@@ -32,4 +32,19 @@ LINK_CODE_IWRAM void LinkWireless::_onTimer() {
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* NOTES:
|
||||
* When using `LINK_WIRELESS_ENABLE_NESTED_IRQ`:
|
||||
* - Any user ISR can interrupt the library ISRs.
|
||||
* - SERIAL ISR can interrupt TIMER ISR.
|
||||
* -> This doesn't cause data races since TIMER ISR only works when
|
||||
* there is no active async task.
|
||||
* -> When TIMER ISR starts an async task (`transferAsync(...)`),
|
||||
* nested interrupts are disabled (`REG_IME = 0`) and SERIAL cannot
|
||||
* interrupt anymore.
|
||||
* - TIMER interrupts are skipped if SERIAL ISR is running.
|
||||
* - VBLANK interrupts are postponed if SERIAL or TIMER ISRs are running.
|
||||
* - Nobody can interrupt VBLANK ISR.
|
||||
*/
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user