Я хотел бы использовать функцию, определенную в другом модуле ядра.
Обычно вы делаете это так:
другой модуль
void do_sth() {
/* ... */
}
EXPORT_SYMBOL(do_sth);
my_module
extern void do_sth();
void some_function(void) {
/* ... */
do_sth();
/* ... */
}
В моем случае я хочу использовать функцию do_sth()
только в том случае, если установлена other_module
или, в качестве альтернативы, если для моего модуля установлен конкретный параметр (например, use_other_module=y
)
Проблема в том, что - как только я объявлю функции как extern
(глобально) - модуль больше не может быть загружен, когда other_module
не установлен или не загружен.
Итак, мои вопросы:
- Есть ли способ определить, экспортируется ли символ во время выполнения?
- Есть ли способ определить символ глобально как внешний изнутри функции?