Delegating printk work to UART interrupt

Alexander alexhoppus111 at gmail.com
Sat Jul 18 01:53:10 EDT 2015


Hi!
When i checked how kernel printing works, i mentioned that it takes messages
from log_buffer in console_unlock and gives it to call_console_drivers -> ...
-> some uart bsp function. Basically, as i see this BSP realization tries
to flush all message chars in busyloop ... so it waits until FIFO_NOT_FULL bit will 
be dropped by UART and it will be able to push the next byte.
Basically, as i see userspace printing do something different. It puts N_FIFO_BYTES
and exits, next, when FIFO will be freed - interrupt will be generated, and
other characters will be put into UART FIFO.
Can we do something similar for kernel printing? i.e. do not busyloop sending char
after char, but put N_FIFO chars and flush  other in interrupt. When panic will occur
we can do busyloop printing again. Is it reliable? Suppose we have several cores.
Thank you.

-- 
Alexander <alexhoppus111 at gmail.com>



More information about the Kernelnewbies mailing list