1) Обычно, если это конфигурация и список параметров, ioctl более популярен и рекомендует его использовать.
2) Вы спрашиваете, есть 2 модуля ядра - A и B, и выхотите прочитать конфигурацию А на Б.В этом случае, независимо от того, что у вас есть proc или ioctl (помните, proc не является реальной файловой системой. Вы печатаете или читаете и возвращаете некоторое значение из некоторых переменных ядра ... вы можете прочитать содержимое из "fs" с помощью VFSв ядре и вернуть строку, но это очень и очень глупо, так как у вас есть контроль над пользовательским пространством.), в конце концов, вам нужно сохранить конфигурацию модуля ядра для некоторых переменных.Если вы хотите прочитать их из другого модуля, ваша переменная должна быть представлена с помощью ключевого слова EXPORT_SYMBOL (), но обычно мы этого не делаем.
Создайте некоторый API на вашем символе, который возвращает значение конфигурации ивыставить эти API и вызвать его из другого модуля.Из-за зависимости от модуля вам может потребоваться быть осторожным.
Самый простой способ сделать это - создать некоторый ptr обратного вызова и определить его в исходном коде ядра.И затем, когда модуль A инициализируется, настройте ptr обратного вызова и вызовите его из модуля B. В этом случае вы избавитесь от зависимости модуля.
или создадите указатель обратного вызова на модуле B и создадите модуль Bкак встроенный модуль и выставить ptr обратного вызова.
Затем из модуля A вы можете инициализировать их и всякий раз, когда вы вызываете его из B, вы можете проверить «нулевой ptr» в этом обратном вызове ptr.
Надеюсь, что это поможет вам.