Я занимаюсь этим исследованием, пытаясь найти в ядре Linux код, реализующий обработку прерываний; в частности, я пытаюсь найти код, отвечающий за обработку системного таймера.
Согласно http://www.linux-tutorial.info/modules.php?name=MContent&pageid=86
Ядро обрабатывает прерывания так же, как и исключения: все регистры общего назначения помещаются в системный стек и вызывается общий обработчик прерываний. > Текущий приоритет прерывания сохраняется, и загружается новый приоритет. Это предотвращает> прерывания с более низким уровнем приоритета от прерывания ядра, пока оно обрабатывает это прерывание. Затем вызывается реальный обработчик прерывания.
Я ищу код, который помещает в стек все регистры общего назначения, а также общий код обработки прерываний.
По крайней мере, размещение регистров общего назначения в стеке не зависит от архитектуры, поэтому я ищу код, связанный с архитектурой x86. На данный момент я смотрю исходники ядра версии 3.0.4, но любая версия, вероятно, подойдет. Я начал искать в kernel / irq / handle.c, но не вижу ничего похожего на сохранение регистров; похоже, что он вызывает зарегистрированный обработчик прерывания.