termios

Wolfram Wadepohl W.Wadepohl at indumat.de
Tue Apr 29 06:21:57 UTC 2003


Joel Sherrill schrieb:

>Thomas Doerfler wrote:
>  
>
>>Hello,
>>
>>I think you refer to the loop starting with
>>
>>                while (tty->rawInBuf.Head != tty->rawInBuf.Tail) {
>>
>>in function "fillBufferQueue" in termios.c.
>>
>>IMHO a solution would be to limit the loop to the cases, when
>>the variable "wait" ist still TRUE, so a replacement for the
>>upper line would be
>>
>>                while (wait && (tty->rawInBuf.Head != tty->rawInBuf.Tail)) {
>>    
>>
>
>I think either will work but changing the semantics of the checks being
>made
>separately scares me a bit without doing more analysis.
>
There is adiffernce between my solution and Thomas'. with the inserted 
break only in cannonical processing input is terminated with either a 
NL, EOF, EOL or EOL2. in non cannonical processing as much as available 
characters are returned to the application. IMO this the right way, 
because in non-cannonical mode there is only a lower limit of chars 
VMIN, termios should return as much characters as available.

>I think Wolfram's solution is correct and less likely to perturb things.
>
>Can one of you file a PR once the patch is tested?
>
>FWIW my first job out of college was porting the System V TTY driver
>to an embedded environment.  It was an intelligent serial controller
>and the card pretty closely mapped section 2 system calls.  The code
>was incredibly complicated and the RTEMS termios driver is a piece of
>cake to read compared to that. :)
>
>--joel
>
>
>  
>
>>wkr,
>>        Thomas Doerfler.
>>
>>    
>>
>>>Hello,
>>>
>>>we are struggling with the termios system in the moment and we need the
>>>help of the community.
>>>either there is a missunderstanding of cannonical processing by us or a
>>>real bug in the termio system.
>>>the function fillBufferQuue() is responsible to transfer from raw input
>>>buffer into cooked buffer and all the control character processing is
>>>handled by iproc(). when iproc() signals a completed line by returning a
>>>one, fillBufferQueue does not return to the caller with this line in the
>>>cooked buffer, but remains in its loop and appends all further
>>>characters (after cannonical processing) to the cooked buffer. IMHO
>>>fillBufferQueue should return immediately after an NL, EOF, EOL or EOL2
>>>was added to cooked buffer.
>>>
>>>this behaviour could be accomplished by adding a break instruction after
>>>the wait = 0; instruction after calling siproc() in cannonical processing.
>>>      
>>>
>>>--
>>>Schöne Grüße aus Reutlingen
>>>
>>>Wolfram Wadepohl
>>>Entwicklung
>>>
>>>--
>>>INDUMAT GmbH & Co. KG
>>>Transport- und Lagersysteme
>>>Dieselstraße 6
>>>D-72770 Reutlingen - Betzingen
>>>
>>>Tel.  +49 (0)71 21/5 14-2 89
>>>Fax   +49 (0)71 21/5 14-2 99
>>>eMail W.Wadepohl at indumat.de
>>>WWW   http://www.indumat.de
>>>--
>>>
>>>Bitte senden Sie mir keine Word- oder PowerPoint- (tm Microsoft)  Anhänge.
>>>Senden Sie mir einfachen Text, HTML oder PDF.
>>>Siehe http://www.fsf.org/philosophy/no-word-attachments.de.html
>>>
>>>
>>>      
>>>
>>--------------------------------------------
>>IMD Ingenieurbuero fuer Microcomputertechnik
>>Thomas Doerfler           Herbststrasse 8
>>D-82178 Puchheim          Germany
>>email:    Thomas.Doerfler at imd-systems.de
>>PGP public key available at: http://www.imd-
>>systems.de/pgp_keys.htm
>>    
>>
>
>  
>


-- 
Schöne Grüße aus Reutlingen

Wolfram Wadepohl
Entwicklung

--
INDUMAT GmbH & Co. KG
Transport- und Lagersysteme
Dieselstraße 6
D-72770 Reutlingen - Betzingen

Tel.  +49 (0)71 21/5 14-2 89
Fax   +49 (0)71 21/5 14-2 99
eMail W.Wadepohl at indumat.de
WWW   http://www.indumat.de
--

Bitte senden Sie mir keine Word- oder PowerPoint- (tm Microsoft)  Anhänge.
Senden Sie mir einfachen Text, HTML oder PDF. 
Siehe http://www.fsf.org/philosophy/no-word-attachments.de.html





More information about the users mailing list