| .. | .. |
|---|
| 115 | 115 | |
|---|
| 116 | 116 | static int kstack_depth_to_print = 24; |
|---|
| 117 | 117 | |
|---|
| 118 | | -void show_stack(struct task_struct *task, unsigned long *esp) |
|---|
| 118 | +void show_stack(struct task_struct *task, unsigned long *esp, const char *loglvl) |
|---|
| 119 | 119 | { |
|---|
| 120 | 120 | unsigned long *stack, addr; |
|---|
| 121 | 121 | int i; |
|---|
| .. | .. |
|---|
| 125 | 125 | |
|---|
| 126 | 126 | stack = esp; |
|---|
| 127 | 127 | |
|---|
| 128 | | - pr_info("Stack from %08lx:", (unsigned long)stack); |
|---|
| 128 | + printk("%sStack from %08lx:", loglvl, (unsigned long)stack); |
|---|
| 129 | 129 | for (i = 0; i < kstack_depth_to_print; i++) { |
|---|
| 130 | 130 | if (((unsigned long)stack & (THREAD_SIZE - 1)) >= |
|---|
| 131 | 131 | THREAD_SIZE-4) |
|---|
| 132 | 132 | break; |
|---|
| 133 | 133 | if (i % 8 == 0) |
|---|
| 134 | | - pr_info(" "); |
|---|
| 134 | + printk("%s ", loglvl); |
|---|
| 135 | 135 | pr_cont(" %08lx", *stack++); |
|---|
| 136 | 136 | } |
|---|
| 137 | 137 | |
|---|
| 138 | | - pr_info("\nCall Trace:\n"); |
|---|
| 138 | + printk("%s\nCall Trace:\n", loglvl); |
|---|
| 139 | 139 | i = 0; |
|---|
| 140 | 140 | stack = esp; |
|---|
| 141 | 141 | while (((unsigned long)stack & (THREAD_SIZE - 1)) < THREAD_SIZE-4) { |
|---|
| .. | .. |
|---|
| 150 | 150 | */ |
|---|
| 151 | 151 | if (check_kernel_text(addr)) { |
|---|
| 152 | 152 | if (i % 4 == 0) |
|---|
| 153 | | - pr_info(" "); |
|---|
| 153 | + printk("%s ", loglvl); |
|---|
| 154 | 154 | pr_cont(" [<%08lx>]", addr); |
|---|
| 155 | 155 | i++; |
|---|
| 156 | 156 | } |
|---|
| 157 | 157 | } |
|---|
| 158 | | - pr_info("\n"); |
|---|
| 158 | + printk("%s\n", loglvl); |
|---|
| 159 | 159 | } |
|---|