PPP and console driver questions
wthompson at dsg-test.com
Thu Mar 20 03:12:56 UTC 2003
Questions about RTEMS PPP and the interrupt-driven console code for the
Coldfire mcu in mcfuart.c:
1. The pppstart() function in ppp_tty.c calls the termios write callback
function, in the console driver, with a buffer pointer and string
length. The write function in the driver copies the pointer and uses the
queue in place. There appears to be no feedback to prevent pppstart from
calling the write function again before the characters are dequeued,
thus moving the pointers and skipping part of the queue. It also appears
that pppstart could overwrite the data in the buffer before the
interrupt dequeues the previous packet.
Do I understand this correctly? If so, which part of this code needs to
be corrected - the console driver?
2. The console transmit interrupt calls rtems_termios_dequeue_characters
with the buffer length that was passed into it by the previous write
callback. That would mean the dequeue_characters function would
eventually be limited to the smallest packet size previously
transmitted, except that the function ignores the length parameter when
it calls the PPP line discipline function.
Does the console driver need to handle these conditions? It appears that
it should copy the queued transmit characters into it's own buffer, and
that buffer must be large enough to handle anything the pppstart
function will throw at it. Or is it adequate, acceptable, or preferable
to block in the console write function until the queue is empty?
More information about the users