Interrupt Handler Improvements
- 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
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