aboutsummaryrefslogtreecommitdiff
path: root/virt
diff options
context:
space:
mode:
authorRemy Bohmer <linux@bohmer.net>2008-02-08 04:21:05 -0800
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-08 09:22:37 -0800
commit1ecc26bd2789ddb253f61e182a61c776663fe44c (patch)
tree1ad6d8bdc5e9afdc09182af840319ceaa3802ae8 /virt
parentdfa7f343e526f3595d8f1d99807d141ae0c08601 (diff)
atmel_serial: split the interrupt handler
Split up the interrupt handler of the serial port into a interrupt top-half and a tasklet. The goal is to get the interrupt top-half as short as possible to minimize latencies on interrupts. But the old code also does some calls in the interrupt handler that are not allowed on preempt-RT in IRQF_NODELAY context. This handler is executed in this context because of the interrupt sharing with the timer interrupt. The timer interrupt on Preempt-RT runs in IRQF_NODELAY context. The tasklet takes care of handling control status changes, pushing incoming characters to the tty layer, handling break and other errors. It also handles pushing TX data into the data register. Reading the complete receive queue is still done in the top-half because we never want to miss any incoming character. [hskinnemoen@atmel.com: misc cleanups and simplifications] Signed-off-by: Remy Bohmer <linux@bohmer.net> Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com> Cc: Andrew Victor <linux@maxim.org.za> Tested-by: Marc Pignat <marc.pignat@hevs.ch> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'virt')
0 files changed, 0 insertions, 0 deletions