Я пишу программу, состоящую из пользовательской программы и модуля ядра. Модулю ядра необходимо собрать данные, которые он затем «отправит» в пользовательскую программу. Это нужно сделать через файл/proc. Теперь я создаю файл, все в порядке, и потратил века, читая интернет для ответа и все еще не могу его найти. Как вы читаете/записываете файл/proc с пространства ядра? Параметры write_proc и read_proc, переданные в procfile, используются для чтения и записи данных из пространства USER, тогда как мне нужен модуль для записи самого файла/proc.Как читать/писать из/в файл linux/proc из пространства ядра?
5
A
ответ
9
Это не так, как это работает. Когда программа пользовательского пространства открывает файлы, они генерируются «на лету» в каждом конкретном случае. Большинство из них только для чтения и порождена общим механизмом:
- Регистрация запись с create_proc_read_entry
- питания функция обратного вызова (так называемый read_proc по соглашению), который вызывается, когда файл читается
- Эта функция обратного вызова должен заполнить поставляемый буфер и (как правило) вызвать proc_calc_metrics для обновления указателя файла и т. д., поставляемого в пользовательское пространство.
Вы (из ядра) не «пишете» файлы procfs, вы динамически отправляете результаты, когда их запрашивает пользовательское пространство.
0
Одним из подходов к получению данных в пользовательском пространстве будет seq_files. Чтобы настроить (написать) параметры ядра, вы можете рассмотреть узлы sys-fs.
Thanks, Vijay