Как читать / записывать из / в файл linux / proc из пространства ядра? - PullRequest
5 голосов
/ 09 декабря 2010

Я пишу программу, состоящую из пользовательской программы и модуля ядра.Модуль ядра должен собрать данные, которые он затем «отправит» в пользовательскую программу.Это должно быть сделано через файл / proc.Теперь я создаю файл, все хорошо, и целую вечность читал Интернет для ответа и до сих пор не могу найти его.Как вы читаете / записываете файл / proc из пространства ядра?Write_proc и read_proc, предоставляемые в procfile, используются для чтения и записи данных из пространства USER, тогда как мне нужен модуль, чтобы иметь возможность писать сам файл / proc.

Ответы [ 2 ]

9 голосов
/ 09 декабря 2010

Это не так, как это работает. Когда пользовательская программа открывает файлы, они создаются на лету в индивидуальном порядке. Большинство из них доступны только для чтения и генерируются с помощью общего механизма:

  • Зарегистрировать запись с помощью create_proc_read_entry
  • Предоставить функцию обратного вызова (называемую read_proc по соглашению), которая вызывается при чтении файла
  • Эта функция обратного вызова должна заполнять предоставленный буфер и (как правило) вызывать proc_calc_metrics для обновления указателя файла и т. Д., Предоставляемых в пространство пользователя.

Вы (из ядра) не "пишете" в файлы procfs, вы предоставляете результаты динамически, когда пользовательское пространство запрашивает их.

0 голосов
/ 09 декабря 2010

Один из подходов для передачи данных в пользовательское пространство - seq_files.Для настройки (записи) параметров ядра вы можете рассмотреть узлы sys-fs.

Спасибо, Виджей

...