Мне нужно разделить около 100 тыс. Кбайт памяти ядра в пользовательском пространстве. Демон пользователя доступа к этой памяти будет доступен только для чтения несколькими (5-10) раз в секунду. procfs
- лучший способ его реализации?Как делиться памятью ядра Linux с пользовательским пространством (только для чтения)
2
A
ответ
2
kmalloc и vmalloc - это путь.
Но проверить это, прежде чем продолжить: What is the difference between vmalloc and kmalloc?
mmap kernel buffer to user space
Allocating memory for user space from kernel thread
Как уже упоминалось, PROCFS плохой способ обмена данными. Он используется для настроек per se.
'procfs', безусловно, не лучший способ его реализации. Это не очень хорошо по многим причинам. Там _is_ способ обмена памятью между ядром и пользовательскими пространствами (и не обязательно для чтения), но, увы, я лично этого не знаю. Тем не менее, я предполагаю, что вы получите пару страниц (столько, сколько вам нужно) в модуле ядра и поделитесь ими, добавьте эти страницы (с их разрешениями) к виртуальному адресу интересующего вас процесса. не совсем уверен, что это реальный путь или какие сложности есть, но это может заставить вас начать! – Shahbaz
Возможный дубликат [Обмен памятью из модуля ядра Linux для доступа к процессу пользовательского пространства] (https://stackoverflow.com/questions/14289081/share-memory-from-a-linux-kernel-module-for-a- процесс-пространства пользователя к доступу) –