Я отправил запрос ранее, и я повторяю то же самое. Я хочу изменить igmpv3 (Linux), встроенный в kernel2.6 .--, чтобы он считывал значение из файла и соответствующим образом решал зарезервированное (res 1) значение внутри пакет igmpv3, отправленный хостом.
Я хочу добавить больше к вышеупомянутому вопросу, сказав, что это более общий вопрос об изменении переменной пространства ядра из пространства пользователя.
На что один ctuffli ответил:
С точки зрения пользовательской наземной программы вы должны думать о драйвере как о «черном ящике» с четко определенными интерфейсами вместо кода с переменными, которые вы хотите изменить. Используя эту ментальную модель, существует четыре способа (т. Е. Интерфейсы) для передачи управляющей информации драйверу, который вы должны рассмотреть:
- Параметры командной строки. Вы можете передать параметры модулю ядра, которые доступны ему во время инициализации.
- IOCTLs. Это традиционный способ передачи управляющей информации драйверу, но этот механизм немного сложнее в использовании, чем sysfs.
- proc псевдо-файловая система с информацией о процессе. proc создает файлы в каталоге / proc, которые пользовательские программы могут читать и иногда записывать. В прошлом этот интерфейс был назначен также для связи с драйверами. Хотя proc выглядит аналогично sysfs, более новые драйверы (Linux 2.6) должны использовать вместо этого sysfs, поскольку целью proc является предоставление отчета о состоянии процессов.
- sysfs - это псевдо-файловая система, используемая для экспорта информации о драйверах и устройствах
В зависимости от того, когда вам нужно связаться с драйвером (т. Е. Инициализация, время выполнения), вы должны добавить либо новый параметр командной строки, либо новую запись sysfs, чтобы изменить способ, которым драйвер обрабатывает значение зарезервированных полей в пакете.
Спасибо Ctuffli за ваш ответ. У меня нет никаких знаний о sysfs. Можете ли вы предоставить более подробную информацию об этом? Я хочу изменить одно из резервных значений igmpv3 pkt на 0, 1 или 2. Это единственное, что мне нужно изменить. Не могли бы вы дать мне больше деталей для этой конкретной проблемы?