реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> буфер из пространства ядра, в пространство пользователя
Dubov
сообщение Dec 26 2012, 07:44
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



Идея такова: есть буфер в драйвере, который заполняется циклически и по прерыванию. необходимо отобразить его в пространство пользователя, чтобы считывать данные. Какими средствами это сделать?
Чем такой подход хуже метода copy_to_user ?

Решение с отображением мне представляется проще.
Go to the top of the page
 
+Quote Post
Idle
сообщение Dec 27 2012, 06:46
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



Средство назывется mmap. Никогда не использовал. Погуглите 'char device mmap' .
Я бы начал с read.
Go to the top of the page
 
+Quote Post
Dubov
сообщение Dec 27 2012, 07:31
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



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

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

И вот что ещё интересно: mmap отображает область памяти, а если у меня в драйвере два буфера да ещё и переменные есть, как выделить именно то что я хочу?
Go to the top of the page
 
+Quote Post
vshemm
сообщение Dec 27 2012, 07:57
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 167
Регистрация: 15-08-07
Пользователь №: 29 803



См. http://www.scs.ch/~frey/linux/memorymap.html с примерами.

mmap избавляет от лишнего копирования между кернел/юзер буферами, что в теории уменьшает задержки
и повышает производительность. На практике это не всегда так, особенно если выделять память через vmalloc.
Go to the top of the page
 
+Quote Post
Olej
сообщение Dec 27 2012, 09:38
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



Цитата(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, работать с такими объёмами за раз - это не частая потребность.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 20:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01407 секунд с 7
ELECTRONIX ©2004-2016