Почему необходимо отметить функции обработчика прерываний как статические?
читая" разработка ядра Linux " Роберта Лав, я нашел на странице 119:
обработчик прерываний обычно помечается как статический, поскольку он никогда не вызывается непосредственно из другого файла.
например:
static irqreturn_t intr_handler(int irq, void *dev)
но почему это так? Я сомневаюсь, что эта функция будет вызвана ядром, и если мы сделаем ее статической, то как ядро ее назовет?
1 ответов
по данным этой, способ использования функции заключается в" регистрации " ее с ядром. То есть, есть такая функция, как InstallIntHdlr
который вы вызываете и передаете указатель вашему обработчику. Затем ядро может использовать этот указатель для вызова функции.
мое предположение, хотя я не уверен в этом, это static
используется как способ обеспечения надлежащего использования обработчика прерываний. То есть, поскольку статические функции не могут быть вызваны из других файлов, это заставляет вас передавать указатель на него, а не вызывать его напрямую.