Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 29.10.2015
Сообщений: 46

Через /dev или /proc

29.10.2015, 14:17. Показов 1551. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток. Появилась задача написать драйвер для PCI устройства. В ходе изучения литературы, в честности книги Колисниченко "Разработка Linux-приложений" появился вопрос: если необходимо передать данные из userspace в kernel, то через что лучше и правильнее это реализовывать? через /dev или /proc? в чем разница?

Спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.10.2015, 14:17
Ответы с готовыми решениями:

В чем разница между «in-proc» и «out-of-proc»?
В чем разница между «in-proc» и «out-of-proc»? Когда вы запускаете компонент из под ASP.NET, в каком процессе он работает под Windows...

Список таблиц участвующих в view или proc
Всем привет. Подскажите, пожалуйста, как вывести список, где будет указано какая таблица участвует в каких view или proc? Это нужно,...

Macro или proc? "Прекращена работа программы" или "fatal error A1010"?
Приветствую каждого, кто забрёл на этот зов помощи! Писал маленькую программу: дана последовательность из 12 натуральных чисел. Выяснить,...

8
Почетный модератор
 Аватар для Humanoid
11559 / 4353 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
29.10.2015, 15:38
Цитата Сообщение от Kverza Посмотреть сообщение
если необходимо передать данные из userspace в kernel, то через что лучше и правильнее это реализовывать?
Через драйвер.

Цитата Сообщение от Kverza Посмотреть сообщение
через /dev или /proc? в чем разница?
В /dev находятся файлы устройств. Взаимодействие с драйверами происходит именно через эти файлы. В /proc обычно находится всякая статистика.

Например, у вас есть USB-камера... драйвер создаёт файл /dev/video0. Ваше приложение открывает этот файл и общается с ним через специальные ioctl запросы. В частности, может получить список поддерживаемых форматов видео, указать формат, с которым хочет работать, запросить буферы под кадры, запрашивать заполнение этих буферов и т.п. А через read() или mmap() можно вычитывать данные.
2
2 / 2 / 0
Регистрация: 29.10.2015
Сообщений: 46
29.10.2015, 20:24  [ТС]
Вы сказали приложение будет общаться через ioctl. Оно должно быть реализовано в драйвере, правильно? А в приложении будет формироваться строка, которая будет позже обычным write писаться в файл, верно?
0
599 / 421 / 137
Регистрация: 02.10.2008
Сообщений: 1,798
Записей в блоге: 1
29.10.2015, 22:31
Это зависит от того как реализовать драйвер.
Драйвер может вообще не иметь ioctl() и всё общение с прогами будет через read/write

Например, /dev/ttyS* - COM-порты. Ус-ва последовательные, т.е. только читаем/пишем, но с помощью ioctl можем менять режимы - битность данных, контроль чётности или скорость приёма-передачи... Все эти свойства реализует драйвер, а прога только пользуется тем, что ей предоставил драйвер. Например, для /dev/ttyS* я не знаю методов работы через mmap

Обычно, для простых драйверов, так и происходит, а ioctl только управляют режимами и для получения статусной инфы.
Иногда проге нужны большие объёмы данных передавать/читать драйверу или менять их в разных местах - тут на помощь mmap. Например драйвер имеет фиксированную область памяти к-либо железного девайса и необходимо дать доступ к ней проге юзера, например область памяти текстового режима экрана на 0xB800. Вместо того чтобы через read/write для изменения одного байта перегонять все 8Кб можно использовать mmap и там прога доберётся до каждого байта без большой передачи данных

З.Ы. Я не писал дров под линух, только под ДОС, но мне это так видится. Если не прав - поправьте.
0
2 / 2 / 0
Регистрация: 29.10.2015
Сообщений: 46
29.10.2015, 23:57  [ТС]
Драйвер планируется самый простейший. В наличии PCI железяка, произведенная в НИИ, простейший сетевой адаптер на коаксиале. Приложение должно отправить железяке адрес и данные, позже из этого соберется пакет, и он запускается в сеть. На другой стороне принимается пакет, забирается то что нужно и можно его для наглядности показать в терминале.

Вот как то так
0
599 / 421 / 137
Регистрация: 02.10.2008
Сообщений: 1,798
Записей в блоге: 1
30.10.2015, 00:42
Цитата Сообщение от Kverza Посмотреть сообщение
простейший сетевой адаптер на коаксиале. Приложение должно отправить железяке адрес и данные, позже из этого соберется пакет, и он запускается в сеть. На другой стороне принимается пакет, забирается то что нужно и можно его для наглядности показать в терминале.
А вот тут вопросы.
1. Железка соединяется "один к одному" или "один ко многим"?
2. Адрес и настройки лучше отправлять/читать через ioctl
3. Какая будет нагрузка в потоке?
4. Надо ли впихивать железку в OSI-стек?

От этих вопросов зависит архитектура и драйвера и приложений, с ентим драйвером работающих
0
2 / 2 / 0
Регистрация: 29.10.2015
Сообщений: 46
30.10.2015, 10:14  [ТС]
1. Один ко многим. В сети может быть до 16 узлов, при оправке пакета происходит широковещательная рассылка и уже на принимающей стороне смотрят адрес, если это направлялось к нам, забираем, если нет - игнорируем.
2.насчет ioctl понял, буду реализовывать
3.точная нагрузка неизвестна, но она будет далеко от максимально возможной
4.нет, не надо
0
599 / 421 / 137
Регистрация: 02.10.2008
Сообщений: 1,798
Записей в блоге: 1
30.10.2015, 18:20
Цитата Сообщение от Kverza Посмотреть сообщение
точная нагрузка неизвестна, но она будет далеко от максимально возможной
Я имел ввиду не нагрузка на железку, а объёмы данных перекачиваемых с юзерспейса в драйвер. Если поток будет в сотню-полторы метров в секунду, то стоит подумать об mmap
0
2 / 2 / 0
Регистрация: 29.10.2015
Сообщений: 46
12.11.2015, 12:03  [ТС]
а как правильно реализовать mmap?? в инете полно примеров под старые ядра, и этот код под ядро 3.16 просто не работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.11.2015, 12:03
Помогаю со студенческими работами здесь

Ида пишет proc near- это в общем для дикорации или что-нибудь означает?
Вообще ИДА классный инструмент пипец!! Нажал ентер- приехал на int __stdcall MessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR...

"webpack-dev-server" не является внутренней или внешней командой, исполняемой программой или пакетным файлом
C:\pycharm\duty\vueapp>npm run dev > vueapp@1.0.0 dev C:\pycharm\duty\vueapp > webpack-dev-server --inline --progress --config...

Ошибка или баг в Dev C++?
помогите разобраться: вот простой код #include <cstdlib> #include <iostream> using namespace std; class card { public: ...

Установка время через /dev/rtc
Использую функцию ioctl для установки hw-времени через /dev/rtc. Если использовать макрос RTC_SET_TIME и передавать в функцию ioctl...

пример с Gluit или OpenGL на Dev C++
В общем давно уже хотел сделать какой-ниб махонький пример с использованием OpenGL, все никак не мог нормально подключить. Сегодня на одном...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru