Я знаю, что есть EXPORT_SYMBOL для модулей ядра, чтобы статически выставлять свои глобальные переменные.
Мой вопрос:
Возможно ли EXPORT_SYMBOL во время выполнения?
Я разрабатываю драйвер ядра для нескольких модулей IC.
Для каждого модуля IC (ko) существует глобальный структурный список «A», в который добавляется собственная функция обнаружения IC. И будет действие для запуска сканирования «А».
Проект состоит в том, что есть ко (и) для каждой ИС и основное ко для основных функций.
Например, есть m1.ko, m2.ko и mm.ko.
Я вставлю m1.ko (создаю «A» и добавлю свою собственную функцию обнаружения),
insmod m2.ko (проверьте наличие «A», если существует, добавьте свое собственное, если не создайте «A» и добавьте) и insmod mm.ko (проверьте наличие «A», если существует, запустите сканирование «A», остальное ничего не делать).
Я могу проверить символ ядра «A» по kallsym_lookup_name, но когда я пришел, чтобы создать «A», если он не существует, я не могу найти функцию для добавления символа ядра динамически.
Есть ли способ правильно добавить символ ядра во время выполнения? Или есть альтернативный способ достижения цели?