Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обработка данных с COM-портов
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
ra9ftm
Кто как обрабатывает данные в своей программе? Сейчас использую вызов select(), но есть подозрение, что он внутри себя крутит цикл, тем самым нагружая ОС. Так ли это?
Судя по этому howto есть возможность указать функцию-обработчик поступающих данных отдельно, которая будет вызываться только при поступлении данных на порт:
http://tldp.org/HOWTO/Serial-Programming-H...115.html#AEN144
andybeg
у меня сейчас в программе стартуют три треда и в каждом из них идёт работа со своим уартом , сейчас использую select для ожидания данных. но что то мне гооврит, что это не оптимально и надо будет обращаться на прямую к регистрам приёма, такмне думается быстрее, но процессор помоим ощущениям select не грузит
кстатичтоза линукс?
ra9ftm
linux 2.6.34, проц lpc3240 smile.gif
andybeg
тогда наверное мои слова актуальны все,я пишу для lpc2478
romez777
QUOTE (ra9ftm @ Sep 17 2010, 05:20) *
Кто как обрабатывает данные в своей программе? Сейчас использую вызов select(), но есть подозрение, что он внутри себя крутит цикл, тем самым нагружая ОС. Так ли это?


А вы посмотрите на реализацию select в драйвере, структура file_operations, метод epoll.
Demeny
Цитата(ra9ftm @ Sep 17 2010, 05:20) *
Кто как обрабатывает данные в своей программе? Сейчас использую вызов select(), но есть подозрение, что он внутри себя крутит цикл, тем самым нагружая ОС. Так ли это?

Чем не устраивает старый добрый блокирующий read(...), запущенный в отдельном потоке ? select() удобно использовать при обслуживании нескольких файловых дескрипторов, а так он без надобности...ИМХО.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.