我正在查看Linux内核流程,我遇到了early_printk
,
在初始化控制台之前用于printk
。
在我的情况下early_printk
未启用,我仍然在printk
之前获得console_init
的打印件。
从哪里获得这些照片?
答案 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.