anonymous@RULINUX.NET~# | Last login: 2024-11-05 10:53:11 |
Регистрация Вход | Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск |
Форум - Development | [RSS] |
Здравствуйте! Очень нужен совет программистов-ядерщиков и всех кто имел дела с написанием/модификацией драйверов/модулей. Есть драйвер, который нужно малость допилить. В общем нужно в этом драйвере как-то считывать значения определенных регистров и передавать их в юзерспейс, причем значения эти быстроменяются (счетный регистр таймера). Сами функции считывания написаны, остается только придумать каким способом отслеживать эти значения из пользовательского пространства. В процессе поиска выяснилось, что можно использовать procfs, sysfs, Netlink, ioctl и наверняка много чего еще. В принципе из драйвера проброшены атрибуты в sysfs, так что можно сделать аналогичным образом, но я не знаю насколько быстро будет происходить обновление значения атрибута (файла в sysfs). Плюс мне не совсем до конца понятна вся концепция модели устройств. Если у кого есть хорошая-годная литература по этому всему, то я обязательно RTFM.
anonymous(*) (2016-01-28 20:12:11)
Mozilla/5.0 (Windows NT 6.1; rv:38.0) Gecko/20100101 Firefox/38.0
|
|
|
Скрыть
Re:Вывод быстроменяющихся данных из ядра в пользовательское пространство> проблему твою наверняка надо решать аппаратно.
|
Скрыть
Re:Вывод быстроменяющихся данных из ядра в пользовательское пространствоТипа того. Если речь о быстроменяющихся счётчиках, то наверняка контроллер нужен а не многозадачная система с непредсказуемыми задержками. anonymous(*)(2016-01-28 20:58:01)
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/538.1 (KHTML, like Gecko) QupZilla/1.8.9 Safari/538.1 |
Скрыть
Re:Вывод быстроменяющихся данных из ядра в пользовательское пространствоСпасибо за совет! А приоритетами задержки будет не побороть? Или скажем RT патчем? |
Скрыть
Re:Вывод быстроменяющихся данных из ядра в пользовательское пространствоНу, традиционно самый быстрый способ — это через отображение памяти. Системные вызовы, связанные со временем, делаются именно так. anonymous(*)(2016-04-08 21:30:31)
Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0 |
Скрыть
Re:Вывод быстроменяющихся данных из ядра в пользовательское пространствоКак-то так: anonymous(*)(2016-04-08 21:32:21)
Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0 |
Скрыть
Re:Вывод быстроменяющихся данных из ядра в пользовательское пространствоТы больной на всю голову. Прикинь, тебе нужно сообщить 64 бита в юзерспейс. При чём о состоянии регистра, значение которого меняется чаще чем исполняются машинные команды. Ты делаешь драйвер, который тратит 100% CPU на копирование этого регистра в какую-то там память, с потерями. Потом юзерский процесс пытается достучаться до этих восьми байт - обращается к 4196-байтной странице памяти, <прошу прощения, прерывание по неотложным причинам> в которую драйвер записал данные хуй знает когда. Едро вместо этого сначала <прошу прощения, прерывание по неотложным причинам> подгружает локальную и глобальную таблицы дескрипторов чтобы удостовериться, что твой сраный юзерспейс <прошу прощения, прерывание по неотложным причинам> имеет право читать эти <прошу прощения, прерывание по неотложным причинам> данные, когда ядро убедилось что <прошу прощения, прерывание по неотложным причинам> твой процесс имеет право доступа к <прошу прощения, прерывание по неотложным причинам> данной области памяти, оно начинает долго и томи<прошу прощения, прерывание по неотложным причинам>тельно тянуть эти четыре килоба<прошу прощения, прерывание по неотложным причинам>йта из RAM потому, что друг<прошу прощения, прерывание по неотложным причинам>ие процессы уже вытеснили страницу из кеш-лайна.
anonymous(*)(2016-04-08 23:14:01)
Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0 |
Скрыть
Re:Вывод быстроменяющихся данных из ядра в пользовательское пространствоОчень интересно, ну а что ты <прошу прощения> предлагаешь? lol anonymous(*)(2016-04-09 00:18:43)
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 |
Скрыть
Re:Вывод быстроменяющихся данных из ядра в пользовательское пространствоКого волнует вывод от сенсоров материнской платы, когда человек реально задрачивается по счётчику времени в процессоре? anonymous(*)(2016-04-09 00:42:48)
Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0 |
Скрыть
Re:Вывод быстроменяющихся данных из ядра в пользовательское пространствоВышеуказанное решение я написал из расчета, что данные уже в ядре, и тебе осталось только сделать "Вывод быстроменяющихся данных из ядра в пользовательское пространство". Про busyloop в ядре я ничего не писал, только в userspace. :) anonymous(*)(2016-04-09 13:47:26)
Отредактировано anonymous по причине "не указана" Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0 |
|
|
|
Этот тред читают 4 пользователя: |
Анонимных: 4 Зарегистрированных: 0 |
Re:Вывод быстроменяющихся данных из ядра в пользовательское пространство
По-yahoo-й на тему "создание драйверов linux" - там и хабровские хелловорлды найдутся и книжки соответствующие. Но в целом проблему твою наверняка надо решать аппаратно.