diff options
| author | Bjoern Brandenburg <bbb@mpi-sws.org> | 2013-06-23 10:29:07 -0400 |
|---|---|---|
| committer | Bjoern Brandenburg <bbb@mpi-sws.org> | 2013-08-07 03:46:42 -0400 |
| commit | 49fa66f74b78c9b08d2ba038db409b5bbde11fab (patch) | |
| tree | c77f254cb3143baae03f4d6b8c67e7c47b4ba64a /kernel | |
| parent | 05ad941dfa83599208ee11b67c49ad54c4f3b78a (diff) | |
Add TRACE() debug tracing support
This patch adds the infrastructure for the TRACE() debug macro.
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/printk.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/kernel/printk.c b/kernel/printk.c index d37d45c90ae6..5616e59096a5 100644 --- a/kernel/printk.c +++ b/kernel/printk.c | |||
| @@ -66,6 +66,13 @@ int console_printk[4] = { | |||
| 66 | }; | 66 | }; |
| 67 | 67 | ||
| 68 | /* | 68 | /* |
| 69 | * divert printk() messages when there is a LITMUS^RT debug listener | ||
| 70 | */ | ||
| 71 | #include <litmus/debug_trace.h> | ||
| 72 | int trace_override = 0; | ||
| 73 | int trace_recurse = 0; | ||
| 74 | |||
| 75 | /* | ||
| 69 | * Low level drivers may need that to know if they can schedule in | 76 | * Low level drivers may need that to know if they can schedule in |
| 70 | * their unblank() callback or not. So let's export it. | 77 | * their unblank() callback or not. So let's export it. |
| 71 | */ | 78 | */ |
| @@ -1552,6 +1559,10 @@ asmlinkage int vprintk_emit(int facility, int level, | |||
| 1552 | */ | 1559 | */ |
| 1553 | text_len = vscnprintf(text, sizeof(textbuf), fmt, args); | 1560 | text_len = vscnprintf(text, sizeof(textbuf), fmt, args); |
| 1554 | 1561 | ||
| 1562 | /* if LITMUS^RT tracer is active divert printk() msgs */ | ||
| 1563 | if (trace_override && !trace_recurse) | ||
| 1564 | TRACE("%s", text); | ||
| 1565 | |||
| 1555 | /* mark and strip a trailing newline */ | 1566 | /* mark and strip a trailing newline */ |
| 1556 | if (text_len && text[text_len-1] == '\n') { | 1567 | if (text_len && text[text_len-1] == '\n') { |
| 1557 | text_len--; | 1568 | text_len--; |
| @@ -2478,7 +2489,7 @@ static DEFINE_PER_CPU(struct irq_work, wake_up_klogd_work) = { | |||
| 2478 | void wake_up_klogd(void) | 2489 | void wake_up_klogd(void) |
| 2479 | { | 2490 | { |
| 2480 | preempt_disable(); | 2491 | preempt_disable(); |
| 2481 | if (waitqueue_active(&log_wait)) { | 2492 | if (!trace_override && waitqueue_active(&log_wait)) { |
| 2482 | this_cpu_or(printk_pending, PRINTK_PENDING_WAKEUP); | 2493 | this_cpu_or(printk_pending, PRINTK_PENDING_WAKEUP); |
| 2483 | irq_work_queue(&__get_cpu_var(wake_up_klogd_work)); | 2494 | irq_work_queue(&__get_cpu_var(wake_up_klogd_work)); |
| 2484 | } | 2495 | } |
