Драйвер, управляемый прерываниями, использующий TTY? - PullRequest
0 голосов
/ 30 июля 2010

Я новичок в разработке драйверов для Linux ....Я разрабатываю SMS-драйвер (AT-команды через последовательный порт для модема), используя TTY для доступа к последовательному порту.Драйвер написан на языке C.

В проекте сообщения от модема к драйверу могут быть вызваны двумя событиями:

1) Состояние как ответ на команды AT, выданные драйвером (то есть ожидаемые сообщения)

2) Индикация новых SMS (то есть неожиданных сообщений)

Я планирую два потока - один для записи в TTY и один для чтения из TTY.Можно ли настроить TTY так, чтобы мой поток чтения просыпался по входящим символам (то есть поток чтения запускался по событию и не основывался на опросе)?

С наилучшими пожеланиями, Витек

1 Ответ

2 голосов
/ 30 июля 2010

Я не думаю, что вы действительно хотите две темы. Типичный поток программы (написать AT-команду, проверить ответ и т. Д.) Будет проще писать и отлаживать в однопоточной программе.

Ожидание символов можно сделать с помощью вызова select(). Слой tty в основном настраивается через tcsetattr, tcgetattr и системный вызов друзей. С помощью этого вызова вы можете настроить, хотите ли вы, чтобы вас прерывали, например, на новой строке или на каждом символе. Смотрите man termios для справочной страницы. Два больших варианта, если вы хотите, чтобы специальные символы, такие как EOF, EOL Ctrl-C и т. Д. ..., обрабатывались, имели данные (режим raw) или интерпретировались слоем tty (канонический режим).

См. Часть о выборе в руководстве по последовательному программированию или справочную страницу выбора для получения дополнительной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...