Доброго времени суток!
Подскажите пожалуйста, можно ли сделать следующее: Есть некоторое устройство и к нему драйвер (модуль ядра). В модуле имеется диспетчер памяти устройства (выделить окно, освободить, дать ID и т.п.).
Необходимо сделать следующее - отобразить такое окно в UserSpace. Можно и спользовать mmap, но тут есть следующее НО: программа в UserSpace должна знать адрес начала региона физической памяти, и теоритически может получить доступ к любой области памяти устройства.
Хотелось бы, чтобы обращение к региону физической памяти проходило по его идентификатору (имени). Другими словами в UserSpace должны происходить, например, следующие вызовы: 1. ObjId = AllocateObj(Size); 2. MapObj(ObjId, Addr); (или Addr = MapObj(ObjId);) 3. memcpy(Addr,...);
По идее должна подойти функция remap_pfn_range, но у меня следующая проблема - как в этом случае правильно определить структуру vm_area_struct.
Возможно ли это, или настолько неудобно, что проще забить и использовать все-таки mmap?
Спасибо!