2010-12-09 7 views
5

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

ответ

9

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

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

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

0

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

Thanks, Vijay