Issue while reading from tty driver

Raghavendra arrao at cdac.in
Thu Sep 18 05:42:56 EDT 2014


Hello,

I am trying to explore tty drivers. To start with, I am trying to 
implement a simple loop back device(testing with echo and cat).

The code works fine as far as write is concerned. When the user process 
(echo) calls write() on the device, the driver's write_room() is called 
and then write() is being called successfully. After which, the 
flush_chars() function is being called, in which, a work is scheduled to 
resend the data back to the user space. I have used the 
tty_insert_flip_char() and tty_flip_buffer_push() to get the job done. 
But it is so happening that the read process (cat) is blocking. What 
might be the reason for this blocking?

My code could be found here : 
https://github.com/raghav3276/tty_test/blob/master/tty_test.c

The code is written by taking a reference from LDD3, TTY drivers.
I am implementing the driver on Linux-3.12.1 and I have seen that the 
approach has changed slightly!

Also I have a few more questions regarding the flow of data :
1) During write process, I see that the write is being called twice. In 
the first call, the 'actual' data is being transferred until a new line 
is encountered and in the next call, two new lines are being 
transmitted. So is there any specific format for the data that is to be 
passed to the write() function? Is it mandatory to terminate the data 
with new line or NULL or anything else?
2) Is there any criteria that is to be satisfied to support the read 
functionality as the process that is trying to read the data is blocked? 
Any specific flags or minimum buffer count, etc?

Thanks,
Raghavendra

-------------------------------------------------------------------------------------------------------------------------------
[ C-DAC is on Social-Media too. Kindly follow us at:
Facebook: https://www.facebook.com/CDACINDIA & Twitter: @cdacindia ]

This e-mail is for the sole use of the intended recipient(s) and may
contain confidential and privileged information. If you are not the
intended recipient, please contact the sender by reply e-mail and destroy
all copies and the original message. Any unauthorized review, use,
disclosure, dissemination, forwarding, printing or copying of this email
is strictly prohibited and appropriate legal action will be taken.
-------------------------------------------------------------------------------------------------------------------------------




More information about the Kernelnewbies mailing list