diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2007-02-16 04:28:03 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-16 11:13:59 -0500 |
commit | 79bf2bb335b85db25d27421c798595a2fa2a0e82 (patch) | |
tree | 550ec2654ae1dd65b871de7fe9c890108c6e86d8 /include/linux/hardirq.h | |
parent | f8381cba04ba8173fd5a2b8e5cd8b3290ee13a98 (diff) |
[PATCH] tick-management: dyntick / highres functionality
With Ingo Molnar <mingo@elte.hu>
Add functions to provide dynamic ticks and high resolution timers. The code
which keeps track of jiffies and handles the long idle periods is shared
between tick based and high resolution timer based dynticks. The dyntick
functionality can be disabled on the kernel commandline. Provide also the
infrastructure to support high resolution timers.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Cc: john stultz <johnstul@us.ibm.com>
Cc: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/hardirq.h')
-rw-r--r-- | include/linux/hardirq.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h index 6f657d7f2d04..7803014f3a11 100644 --- a/include/linux/hardirq.h +++ b/include/linux/hardirq.h | |||
@@ -106,6 +106,16 @@ static inline void account_system_vtime(struct task_struct *tsk) | |||
106 | * always balanced, so the interrupted value of ->hardirq_context | 106 | * always balanced, so the interrupted value of ->hardirq_context |
107 | * will always be restored. | 107 | * will always be restored. |
108 | */ | 108 | */ |
109 | #define __irq_enter() \ | ||
110 | do { \ | ||
111 | account_system_vtime(current); \ | ||
112 | add_preempt_count(HARDIRQ_OFFSET); \ | ||
113 | trace_hardirq_enter(); \ | ||
114 | } while (0) | ||
115 | |||
116 | /* | ||
117 | * Enter irq context (on NO_HZ, update jiffies): | ||
118 | */ | ||
109 | extern void irq_enter(void); | 119 | extern void irq_enter(void); |
110 | 120 | ||
111 | /* | 121 | /* |
@@ -123,7 +133,7 @@ extern void irq_enter(void); | |||
123 | */ | 133 | */ |
124 | extern void irq_exit(void); | 134 | extern void irq_exit(void); |
125 | 135 | ||
126 | #define nmi_enter() do { lockdep_off(); irq_enter(); } while (0) | 136 | #define nmi_enter() do { lockdep_off(); __irq_enter(); } while (0) |
127 | #define nmi_exit() do { __irq_exit(); lockdep_on(); } while (0) | 137 | #define nmi_exit() do { __irq_exit(); lockdep_on(); } while (0) |
128 | 138 | ||
129 | #endif /* LINUX_HARDIRQ_H */ | 139 | #endif /* LINUX_HARDIRQ_H */ |