Альтернатива методу GPL * find_symbol * в модуле ядра Linux - PullRequest
0 голосов
/ 09 октября 2018

У меня есть проприетарный Linux модуль, который может быть загружен до или после второго проприетарного модуля, содержащего функцию foo .

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

Общая идея (в свободном синтаксисе) заключается в следующем:

/* check if the module/symbol can be found */    
module, foo_cb = lookup_for_a_symbol("foo");

if (foo_cb && module) {
    /* increment the refcnt to make sure the module will not be unloaded */
    module_try_get(module);

    foo_cb(my_params);

    /* release the module */ 
    module_put(module);
}

Я нашел функцию в module.c, которая выполняет что-то вроде этого, и называется find_symbol , однако это GPL.

Любая альтернатива не-GPL для динамическогопоиск символа?

Спасибо.

1 Ответ

0 голосов
/ 09 октября 2018

Но ваш модуль не экспортирует символы GPL, поэтому это не должно быть проблемой.Единственная проблема заключается в том, что если вы хотите иметь возможность загружать собственный модуль bar без загрузки foo.

Модуль foo должен использовать EXPORT_SYMBOL() для экспорта всего, что будет использоваться bar.

Если вынеобходимо условное динамическое связывание, затем добавьте третий модуль для этого, который вызывает bar с символом из foo и использует EXPORT_SYMBOL() в foo и bar, чтобы сделать необходимые символы доступными для модуля foobar.

...