2013-08-08 1 views
1

Существуют некоторые переменные ядра (например, tcp_frto), которые могут быть доступны из пользовательского пространства, используя команды, такие как sysctl net.ipv4.tcp_frto или cat /proc/sys/net/ipv4/tcp_frto.Изменение переменных/параметров ядра из модуля ядра

Его можно легко прочитать и легко изменить из командной строки bash. Но я хочу изменить их из модуля ядра, который я пишу.

Как читать и записывать эти переменные из модуля?

(исходный код Linux использует sysctl_tcp_frto доступ к этой переменной, которая была объявлена ​​в файле tcp.h. Может быть, можно экспортировать varible имя, а затем можно найти модули, но я не хочу, чтобы изменить источник и скомпилировать его еще раз). Я пытаюсь сделать модуль Loadable Kernel Module (LKM) без компиляции источника каждый раз.

ответ

1

Если переменная ядра Linux не сделана глобальной (используя EXPORT_SYMBOL или один из ее вариантов), ее невозможно прочитать за пределами ее области.

Как есть альтернативные средства для доступа tcp_frto с использованием Procfs, вы можете использовать функции VFS, чтобы сделать то же самое внутри модуля ядра Linux, как показано в этих sample code snippets.

Как это работает и почему это вообще НЕ хорошая идея (если только не для отладки) подробно описано в этом документе article.

 Смежные вопросы

  • Нет связанных вопросов^_^