LINUX.ORG.RU

mmap


0

0

Люди! Есть такая задачка: нужно, чтобы процессы могли использовать некий общий буффер (общую область памяти), который бы выделял модуль в области ядра... :) Итак, в модуле выделяем память функцией kmalloc, к примеру kAddr=kmalloc(100);, затем передаем указатель kAddr через ioctl процессу, а вот как сделать так, чтобы этот процесс смог видеть эту облась для чтения и записи? Слышал, что это можно сделать через mmap... но в man'е написано, что она используется для файлов... можно ли с ее помощью промаппировать память из области ядра, в область процесса? И если можно, то с примерчиком... т.к. у меня не получается вызвать mmap... как ни старался... не вызывается, и все! хоть и в file_operation его занес... да и вообще, делаю все, как в книжке! :) Помогите разобраться.. с линуксом я еще на Вы... :)

anonymous

а ты уверен, что от kAddr в user space будет какая-то польза?

SadStork
()

ну а как же тогда? из user space я вызываю mmap, где offset будет равен kAddr... или не так?

anonymous
()

военный ну ты че? после kmalloc у тебя выделиться память которая будет доступна только из нулевого кольца это уже на хардверном уровне ограничение а чтобы процессы имели один и тот же кусок пямяти юзай shared memory

lg ★★
()

общую память между модулем и процессами можно симулировать...
Я имею в виду, что доступ в память можно организовать через read/write/ioctl с девайсом.

Dead ★★★★
()

понятно что через гейт можешь пролезть в нулевое кольцо - для этого гейт и сделан - фишка в том что тебе надо будет _скопировать_ данные из кернеля а не иметь к ним доступ на прямую

lg ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.