aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/kernel.h
diff options
context:
space:
mode:
authorPeter Zijlstra <a.p.zijlstra@chello.nl>2008-08-08 21:47:09 +0200
committerIngo Molnar <mingo@elte.hu>2008-08-11 13:46:53 +0200
commitb845b517b5e3706a3729f6ea83b88ab85f0725b0 (patch)
tree4311e4c2e6c3fdbdbe89149d1501944294186455 /include/linux/kernel.h
parent796aadeb1b2db9b5d463946766c5bbfd7717158c (diff)
downloadkernel_samsung_tuna-b845b517b5e3706a3729f6ea83b88ab85f0725b0.zip
kernel_samsung_tuna-b845b517b5e3706a3729f6ea83b88ab85f0725b0.tar.gz
kernel_samsung_tuna-b845b517b5e3706a3729f6ea83b88ab85f0725b0.tar.bz2
printk: robustify printk
Avoid deadlocks against rq->lock and xtime_lock by deferring the klogd wakeup by polling from the timer tick. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/linux/kernel.h')
-rw-r--r--include/linux/kernel.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index aaa998f..113ac8d 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -200,6 +200,8 @@ extern struct ratelimit_state printk_ratelimit_state;
extern int printk_ratelimit(void);
extern bool printk_timed_ratelimit(unsigned long *caller_jiffies,
unsigned int interval_msec);
+extern void printk_tick(void);
+extern int printk_needs_cpu(int);
#else
static inline int vprintk(const char *s, va_list args)
__attribute__ ((format (printf, 1, 0)));
@@ -211,6 +213,8 @@ static inline int printk_ratelimit(void) { return 0; }
static inline bool printk_timed_ratelimit(unsigned long *caller_jiffies, \
unsigned int interval_msec) \
{ return false; }
+static inline void printk_tick(void) { }
+static inline int printk_needs_cpu(int) { return 0; }
#endif
extern void asmlinkage __attribute__((format(printf, 1, 2)))