Чтение последовательного порта Linux - можно ли изменить размер входного буфера?
Я пишу приложение на Ubuntu Linux на C ++ для чтения данных с последовательного порта. Он работает успешно с помощью моего кода вызоваselect()
а потомioctl(fd,FIONREAD,&bytes_avail)
чтобы узнать, сколько байтов доступно, прежде чем, наконец, получить данные, используяread()
.
Мой вопрос таков: каждый разselect
возвращается с данными, число доступных байтов сообщается как 8. Я предполагаю, что это размер буфера, установленный где-то, и что select возвращает уведомление пользователю, когда этот буфер заполнен.
Я новичок в Linux как разработчик (но не новичок в C ++), и я попытался (безуспешно) исследовать, возможно ли изменить размер этого буфера, или даже если мои предположения верны. В моем приложении синхронизация имеет решающее значение, и я должен быть предупрежден всякий раз, когда в буфере чтения появляется новый байт. Возможно ли это, не углубляясь в код ядра?