aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/workqueue.h
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2009-08-25 09:51:05 -0400
committerThomas Gleixner <tglx@linutronix.de>2009-08-26 03:54:16 -0400
commit0a764c16d61b4d5ec9a9fadae931c79484a274cd (patch)
tree83f5463a4ad91dff736b2f863474f09696585eaf /include/linux/workqueue.h
parentd763572ce4307b7d45faf51c020150aa3e918855 (diff)
perf_counters: defer poll() wakeups to softirq on RT
Normally pending work is work that cannot be done from NMI context, such as wakeups and disabling the counter. The pending work is a single linked list using atomic ops so that it functions from NMI context. Normally this is called from IRQ context through use of an self-IPI (x86) or upon enabling hard interrupts (powerpc). Architectures that do not implement perf_counter_set_pending() nor call perf_counter_do_pending() upon leaving NMI context will get a polling fallback from the timer softirq. However, in -rt we cannot do the wakeup from IRQ context because its a wait_queue wakup, which can be O(n), so defer all wakeups to the softirq fallback by creating a second pending list that's only processed from there. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net> LKML-Reference: <1251208265.7538.1157.camel@twins> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include/linux/workqueue.h')
0 files changed, 0 insertions, 0 deletions