apache / apache/nuttx

Interrupt Handler Improvements

Open
#1,133 1 comment 0 reactions 0 assignees View on GitHub
Type: Enhancement
Dominant language
C
Stars
4k
Forks
1.7k
Avg merge
1d 17h
Merged PRs (30d)
237

Description

## Improve Back-to-Back Interrupt Performance

I suspect that the current interrupt performance could be improved for handling back-to-back interrupts. The current interrupt handling sequence is like:

1. Save register state on input
2. Instantiate interrupt stack
3. Save register state in protect register
4. Call arm_doirq() (for ARMv7-M)
5. if register state has changed, perform context switch
6. Return from interrupt using selected register state

I think if we added a loop in this, we could improve interrupt handling in certain cases. Like:

1. Save register state on input
2. Instantiate interrupt stack
3. Save register state in protect register
4. Call arm_doirq() (for ARMv7-M)
5. _If another interrupt is pending, goto 4_
6. if register state has changed, perform context switch
7. Return from interrupt using selected register state

Contributor guide

Open the contributing guide

Research direction

Start by locating the ARMv7-M interrupt handling path and the arm_doirq() entry point. Review how pending back-to-back interrupts and register-state changes are currently handled, then determine how to validate that looping over pending interrupts improves performance without breaking context switching or return behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
embedded-iot, operating-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.