function read() isn't quick enough for reading in ttyS*

Federico Tula Rovaletti <[email protected]>
Newsgroups org.kernel.vger.linux-c-programming
Message-ID <[email protected]>
Hi all! I'm a novice in Linux

In a program I'm writing in c, when I use the read() function for
reading a byte in the serial port with a configuration: 115200 bps,
8N2

takes from 2ms to 6ms (aleatory, even if read up to 10 bytes takes the
same time), which is  too long.
(ioctl(fd, FIONREAD, &bytes)  last the same)

This is the time is suppose to last:
8 bits: data
2 bits: stop
1 bit: start
time = ((8+2+1)bits/115200bps) = 0.095ms,

then when I read the byte with the function inb_p() takes ~ 0.1ms
which is perfect, what I'm needing for my project.

The problem I'm having is that I use signals (with fcntl(fd, F_SETFL,
O_ASYNC) ) but this signals last the same time in occur that the
read() (unacceptable) so I guess that this is a problem of the driver
that is to slow.

So the question is, is there any way to improve the performance of the
driver, or how can I have a faster response with read()? (doing inb_p
is very nasty). Do I'm doing something wrong?

Thanks in advance!, I expect as soon as possible any answer

PD: sorry for my bad English,
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.