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

 
 
> Драйвер блочного устройства в Linux
3.14
сообщение Oct 25 2005, 20:28
Сообщение #1


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Отзовитесь плиз, кто писал драйвер блочного устройства под линух.
С символьным относительно быстро разобрался, а вто с блочным cranky.gif
Примеры в uClinux не особо помогают, пока даже не могу вычленить нужные части.


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
3.14
сообщение Oct 30 2005, 11:14
Сообщение #2


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Мне вот еще что не понятно.
В примере с символьным драйвером обращение к устройству сводится к вызову функций чтения/записи которые прописаны в структуре fosp, соответсвенно когда обращаюсь к устройству через read/write и т.п. то передаю указатель на буфер обмена.
В драйвере блочного устройства я не пойму как передается указатель на буфер обмена. В примере, осуществляется такое объявление функции запроса
Код
...
static XStatus(*req_fnc) (XSysAce * InstancePtr, u32 StartSector,
    int NumSectors, u8 * BufferPtr);
...
static void xsysace_do_request(request_queue_t * q)
{
    if (req_active)
 return;

    for (;;) {
 INIT_REQUEST;

 switch (CURRENT->cmd) {
 case READ:
     req_str = "reading";
     req_fnc = XSysAce_SectorRead;
     break;
 case WRITE:
     req_str = "writing";
  req_fnc = XSysAce_SectorWrite;
     break;
 default:
     printk(KERN_CRIT "%s: unknown request %d.\n",
         DEVICE_NAME, CURRENT->cmd);
     end_request(0);    
     continue;      
 }
 req_active = 1;
 wake_up(&req_wait);
 return;
    }
}
Т.е., например вызывается XSysAce_SectorRead, которая заполняет BufferPtr относящийся к структуре InstancePtr, но вот как этот BufferPtr передается приложению пользователя cranky.gif


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
amw
сообщение Nov 1 2005, 17:01
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



В ядрах 2.6 есть еще так называемые шедулеры ввода/вывода которые занимаются планированием очереди, предсказанием номеров секторов, которые могут потребоватся в следующей оперции чтения/записи и много другого.
Как в 2.4 с этим - я не знаю, но стоит посмотреть есть ли в исходниках ядра файл с именем elevator.c (ну или похожим). Если есть, то стоит его изучить, хотя это занятие неблагодарное. После изучения этого файла (и сопутствующих ему) появится понимание (а может наоборот - пропадет вовсе smile.gif), но использовать это понимание на практике будет затруднительно.

Драйвер блочного устройства знает как выполнять чтение/запись секторов, но не знает когда это происходит.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 3.14   Драйвер блочного устройства в Linux   Oct 25 2005, 20:28
- - makc   Цитата(3.14 @ Oct 25 2005, 23:28)Отзовитесь п...   Oct 26 2005, 04:05
- - amw   Цитата(3.14 @ Oct 25 2005, 23:28)Отзовитесь п...   Oct 26 2005, 15:23
- - 3.14   Нижесказанное касается uClinux, ядро 2.4. Начал я ...   Oct 26 2005, 20:35
|- - gab   Цитата(3.14 @ Oct 26 2005, 23:35)Нижесказанно...   Oct 27 2005, 01:35
|- - makc   Цитата(3.14 @ Oct 26 2005, 23:35)Нижесказанно...   Oct 27 2005, 06:23
|- - amw   Цитата(makc @ Oct 27 2005, 09:23)Цитата(3.14 ...   Oct 28 2005, 09:13
|- - amw   Цитата(makc @ Oct 27 2005, 09:23)У меня есть ...   Oct 28 2005, 12:03
- - 3.14   Всем спасибо, с мертвой точки наконец сдвинулся. К...   Oct 29 2005, 12:13
|- - amw   Цитата(3.14 @ Oct 29 2005, 15:13)Всем спасибо...   Nov 1 2005, 16:33
|- - amw   Цитата(3.14 @ Oct 30 2005, 14:14)Мне вот еще ...   Nov 1 2005, 16:50
|- - makc   Цитата(amw @ Nov 1 2005, 20:01)В ядрах 2.6 ес...   Nov 1 2005, 17:21
|- - amw   Цитата(makc @ Nov 1 2005, 20:21)ЦитатаДрайвер...   Nov 2 2005, 14:13
|- - makc   Цитата(amw @ Nov 2 2005, 17:13)А можна с этог...   Nov 2 2005, 16:37
|- - amw   Цитата(makc @ Nov 2 2005, 19:37)Книга Linux D...   Nov 3 2005, 09:47
- - 3.14   Требуется помощь. Я хочу воспользоваться драивером...   Nov 3 2005, 19:49
- - makc   Отучение может быть выполнено лишь одним способом ...   Nov 3 2005, 20:49
- - 3.14   А если я сделаю так: в фунции xsysace_do_request в...   Nov 3 2005, 21:48
|- - makc   Цитата(3.14 @ Nov 4 2005, 00:48)А если я сдел...   Nov 4 2005, 20:19
- - 3.14   В общем, как то кастрировал этот драйвер, правда м...   Nov 4 2005, 16:01
|- - makc   Цитата(3.14 @ Nov 4 2005, 19:01)В общем, как ...   Nov 4 2005, 20:28
- - 3.14   Блин, чем дальше, тем ... На данный момент, мой...   Nov 5 2005, 14:42
|- - makc   Цитата(3.14 @ Nov 5 2005, 17:42)Блин, чем дал...   Nov 5 2005, 17:18
- - 3.14   Спасибо! Поправил с учетом последних указаний,...   Nov 5 2005, 18:35
|- - makc   Цитата(3.14 @ Nov 5 2005, 21:35)Спасибо! ...   Nov 5 2005, 19:18
- - 3.14   Далее. 1) Когда мой тестик читает из устройства 51...   Nov 5 2005, 21:52
- - 3.14   Уф-ф, мон...   Nov 6 2005, 15:56
- - makc   Цитата(3.14 @ Nov 6 2005, 18:56) Уф-ф, мо...   Nov 6 2005, 16:28


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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 01:18
Рейтинг@Mail.ru


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