在Linux内核中的console_int()之前的printk()

时间:2018-03-14 11:18:31

标签: linux-kernel

我正在查看Linux内核流程,我遇到了early_printk, 在初始化控制台之前用于printk

在我的情况下early_printk未启用,我仍然在printk之前获得console_init的打印件。

从哪里获得这些照片?

1 个答案:

答案 0 :(得分:0)

如果您看到内核源代码如下,即使禁用early_printk,内核消息也需要在panic等场景中打印。

#ifdef CONFIG_EARLY_PRINTK
extern asmlinkage __printf(1, 2)
void early_printk(const char *fmt, ...);
#else   
static inline __printf(1, 2) __cold
void early_printk(const char *s, ...) { }

从上面开始,调用是否启用early_printk()disable情况下,如果有early_panic(),则会调用它。

early_panic()表示内核是否正在尝试恢复如下所示的问题,如果没有,那么panic()将会发生die

[40462.661285] Attribute myarray: Invalid permissions 0700
                                                       |
here I tried to give permission to `variable` to verify whether `panic` happens or not.