Почему необходимо отметить функции обработчика прерываний как статические?

читая" разработка ядра Linux " Роберта Лав, я нашел на странице 119:

обработчик прерываний обычно помечается как статический, поскольку он никогда не вызывается непосредственно из другого файла.

например:

static irqreturn_t intr_handler(int irq, void *dev)

но почему это так? Я сомневаюсь, что эта функция будет вызвана ядром, и если мы сделаем ее статической, то как ядро ее назовет?

1 ответов


по данным этой, способ использования функции заключается в" регистрации " ее с ядром. То есть, есть такая функция, как InstallIntHdlr который вы вызываете и передаете указатель вашему обработчику. Затем ядро может использовать этот указатель для вызова функции.

мое предположение, хотя я не уверен в этом, это static используется как способ обеспечения надлежащего использования обработчика прерываний. То есть, поскольку статические функции не могут быть вызваны из других файлов, это заставляет вас передавать указатель на него, а не вызывать его напрямую.