
Hi Simon,
I have questions of driver model serial.
The comment block in include/serial.h states .pending is optional
---------------------------->8------------------------------- * pending() - Check if input/output characters are waiting * * This can be used to return an indication of the number of waiting * characters if the driver knows this (e.g. by looking at the FIFO * level). It is acceptable to return 1 if an indeterminant number * of characters is waiting. * * This method is optional. ----------------------------8<-------------------------------
When I was testing my driver model conversion patch, I noticed ctrlc() function would not work without .pending handler.
The function ctrlc() calls tstc() and if it returns non-zero value, it also calls getc().
If .pending handler is not implemented, tstc() function always return 1, even if no input character is available in UART FIFO; As a result, getc() function will get stuck in
do { err = ops->getc(cur_dev); } while (err == -EAGAIN);
loop.
For example, "help" command does not work.
So, .pending is mandatory, isn't it?
One more question.
The comment says .pending is: Check if input/output characters are waiting
Should .pending check output buffer? or input only?