summaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
authorRemy Bohmer <linux@bohmer.net>2008-02-08 13:21:05 +0100
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-08 18:22:37 +0100
commit1ecc26bd2789ddb253f61e182a61c776663fe44c (patch)
tree1ad6d8bdc5e9afdc09182af840319ceaa3802ae8 /init
parentatmel_serial: fix bugs in probe() error path and remove() (diff)
downloadlinux-1ecc26bd2789ddb253f61e182a61c776663fe44c.tar.xz
linux-1ecc26bd2789ddb253f61e182a61c776663fe44c.zip
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 'init')
0 files changed, 0 insertions, 0 deletions