summaryrefslogtreecommitdiff
path: root/fs/splice.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2012-10-04 13:20:47 (GMT)
committerScott Wood <scottwood@freescale.com>2015-02-13 22:21:08 (GMT)
commitb0b0d3509fb7ef9a4ac283241572d7c793317c1a (patch)
treeb3b623114f6875211f049d476f05f54c1880ff2c /fs/splice.c
parente7a79b423f6cb2b508ddc8932a42ce352877bb29 (diff)
downloadlinux-fsl-qoriq-b0b0d3509fb7ef9a4ac283241572d7c793317c1a.tar.xz
softirq: Split softirq locks
The 3.x RT series removed the split softirq implementation in favour of pushing softirq processing into the context of the thread which raised it. Though this prevents us from handling the various softirqs at different priorities. Now instead of reintroducing the split softirq threads we split the locks which serialize the softirq processing. If a softirq is raised in context of a thread, then the softirq is noted on a per thread field, if the thread is in a bh disabled region. If the softirq is raised from hard interrupt context, then the bit is set in the flag field of ksoftirqd and ksoftirqd is invoked. When a thread leaves a bh disabled region, then it tries to execute the softirqs which have been raised in its own context. It acquires the per softirq / per cpu lock for the softirq and then checks, whether the softirq is still pending in the per cpu local_softirq_pending() field. If yes, it runs the softirq. If no, then some other task executed it already. This allows for zero config softirq elevation in the context of user space tasks or interrupt threads. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'fs/splice.c')
0 files changed, 0 insertions, 0 deletions