Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: буфер из пространства ядра
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
Dubov
Идея такова: есть буфер в драйвере, который заполняется циклически и по прерыванию. необходимо отобразить его в пространство пользователя, чтобы считывать данные. Какими средствами это сделать?
Чем такой подход хуже метода copy_to_user ?

Решение с отображением мне представляется проще.
Idle
Средство назывется mmap. Никогда не использовал. Погуглите 'char device mmap' .
Я бы начал с read.
Dubov
Цитата(Idle @ Dec 27 2012, 09:46) *
Средство назывется mmap. Никогда не использовал. Погуглите 'char device mmap' .
Я бы начал с read.

спасибо.
Если сравнивать два метода (mmap и read) : почему второй все хвалят.

И вот что ещё интересно: mmap отображает область памяти, а если у меня в драйвере два буфера да ещё и переменные есть, как выделить именно то что я хочу?
vshemm
См. http://www.scs.ch/~frey/linux/memorymap.html с примерами.

mmap избавляет от лишнего копирования между кернел/юзер буферами, что в теории уменьшает задержки
и повышает производительность. На практике это не всегда так, особенно если выделять память через vmalloc.
Olej
Цитата(vshemm @ Dec 27 2012, 11:57) *

Публикация весьма старая, автор играется с ядрами больше 2.2 и 2.4, то что касается 2.6 дописано явно позже и по верхам (то, что он показывает как пример для 2.6 - просто на-дух не компилируется под современное ядро, код надо перекраивать).
Но для ознакомления годится.

Цитата(vshemm @ Dec 27 2012, 11:57) *
mmap избавляет от лишнего копирования между кернел/юзер буферами, что в теории уменьшает задержки
и повышает производительность. На практике это не всегда так, особенно если выделять память через vmalloc.

1. во-первых, это действительно "только в теории", реально это не даёт ускорения ... или мало заметно;
2. это могло бы быть интересно, возможно, при обменах единоразово большими объёмами между ядром и юзерспейс - в несколько PAGE_SIZE, работать с такими объёмами за раз - это не частая потребность.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.