Блокировка на cписок linux kernel modules

Тема в разделе "WASM.UNIX", создана пользователем bers, 5 фев 2010.

  1. bers

    bers New Member

    Публикаций:
    0
    Регистрация:
    16 сен 2005
    Сообщения:
    139
    Адрес:
    Russia
    Всем день добрый.
    Столкнулся с такой проблемой:
    необходимо увеличить количество ссылок на определенный модуль ядра
    из текущего (этот определенный модуль является ссылающимся на мой
    модуль). Имя модуля мне известно, поэтому было решено использовать
    такой подход:
    1) проходим по списку THIS_MODULE->modules_which_use_me и, собственно,
    находим по имени нужный нам модуль (mod);
    2) используя try_module_get( mod ) получаем дополнительную ссылку на
    модуль.
    Косяк заключается в том, что никакой блокировки ни на список всех
    модулей системы, ни на список modules_which_use_me в ядрах ниже 2.6.30.x
    наружу не выдается (static в kernel/module.c). Данные ядра (выше
    приведенного) я использовать не имею права (по многим причинам); текущее
    ядро - 2.6.18 и выше. Можно, конечно, использовать preempt_disable()/
    preempt_enable(), но ведь в таком случае происходит блокировка на уровне
    1 CPU, а необходимо обеспечить работу и в многопроцессорной среде тоже.
    Знает ли кто какие-либо подходы к решению этой задачи?
    Заранее спасибо.