From 25187591e484f8997de9e4a6bf7316e92c03fdad Mon Sep 17 00:00:00 2001 From: iosdevlog Date: Thu, 9 Jun 2022 15:57:32 +0800 Subject: [PATCH 1/2] add article: printk --- articles/20220606-linux-printk.md | 793 ++++++++++++++++++ articles/images/printk/Calls-_printk.png | Bin 0 -> 22587 bytes .../images/printk/Calls-printk_sprint.png | Bin 0 -> 31132 bytes .../images/printk/ObjectReferences-printk.png | Bin 0 -> 99456 bytes 4 files changed, 793 insertions(+) create mode 100644 articles/20220606-linux-printk.md create mode 100644 articles/images/printk/Calls-_printk.png create mode 100644 articles/images/printk/Calls-printk_sprint.png create mode 100644 articles/images/printk/ObjectReferences-printk.png diff --git a/articles/20220606-linux-printk.md b/articles/20220606-linux-printk.md new file mode 100644 index 0000000..713d6df --- /dev/null +++ b/articles/20220606-linux-printk.md @@ -0,0 +1,793 @@ +> Author: iosdevlog
+> Date: 2022/06/06
+> Project: [RISC-V Linux 内核剖析](https://gitee.com/tinylab/riscv-linux) + +# printk 剖析 + +## printk 相关函数 + +![ObjectReferences-printk](./images/printk/ObjectReferences-printk.png) + +## printk 与 printf 对比 + +printk 是一个 Linux 内核接口 C 函数,它将消息输出到内核日志,而 printf 命令用于在终端窗口中显示字符串,数字或任何其他格式说明符。 + +最著名的Linux内核函数之一是`printk()`。。它是用于打印消息的默认工具,也是跟踪和调试的最基本方法。printf() 方法将参数打印到 stdout 流中,这些参数写在双倒引号中。 + +`printk()` | printf() +---|--- +`printk()` 是一个内核级函数,可以打印到各种日志级别 | printf() 将始终打印到 STD OUT 文件描述符 +不是标准库函数 | 是 C 标准库函数 +内核层 | 应用程序层 +`printk()` 方法可以随时从内核中的几乎任何地方调用 | printf() 方法不是那么健壮 +在内核启动过程中的特定点之前,在控制台初始化之前,无法使用 | 系统处于就绪状态 +printk(KERN_INFO "This is LinuxLab\n"); | printf("This is LinuxLab\n"); +`printk()` 是行驱动的,只有换行符接收的数据才会写入终端 | 不是行驱动。 + +## printk 历史 + +Linux 0.01 (1991-09) kernel/printk.c + +```c +// https://elixir.bootlin.com/linux/0.01/source/kernel/printk.c +/* + * When in kernel-mode, we cannot use printf, as fs is liable to + * point to 'interesting' things. Make a printf with fs-saving, and + * all is well. + */ +#include +#include + +#include + +static char buf[1024]; + +int printk(const char *fmt, ...) +{ + va_list args; + int i; + + va_start(args, fmt); + i=vsprintf(buf,fmt,args); + va_end(args); + __asm__("push %%fs\n\t" + "push %%ds\n\t" + "pop %%fs\n\t" + "pushl %0\n\t" + "pushl $_buf\n\t" + "pushl $0\n\t" + "call _tty_write\n\t" + "addl $8,%%esp\n\t" + "popl %0\n\t" + "pop %%fs" + ::"r" (i):"ax","cx","dx"); + return i; +} +``` + +版本 | 变更 +|---|---| +0.01/1991-09 | direct synchronous printing to terminal +0.96a/1992-05 | ringbuffer (4K), syslog, variable "log_wait" +0.99.7A/1993-03 | variable "log_buf" (4K), console registration, upon registration console prints existing ringbuffer +0.99.13k/1993-09 | loglevels (encoded as "" in messages) +0.99.14/1993-11 | interrupts disabled for ringbuffer store and console printing +2.1.31/1997-03 | multiple console support, console write() callback +2.1.80/1998-01 | spinlock "console_lock", ringbuffer store and console printing under spinlock +2.4.0/2000-10 | bust_spinlocks(), re-init console_lock on crash/lockup +2.4.10/2001-08 | printk now non-synchronous +2.5.51/2002-12 | /dev/kmsg to printk from userspace +2.5.53/2002-12 | do not console print if printk-CPU is not online +2.6.0/2003-10 | variable "log_buf_len", kernel boot argument "log_bug_len" +2.6.11/2005-01 | BKL changed to semaphore +2.6.12/2005-03 | add timing information to messages +2.6.25/2008-01 | do not allow printk to recurse (unless oops_in_progress) +2.6.26/2008-05 | hide console printing latency from irq latency tracer +2.6.27/2008-08 | add printk tick to wake syslog +2.6.32/2009-10 | kmsg_dump interface +2.6.35/2010-05 | support for dmesg from kdb +2.6.36/2010-06 | trigger console printing when a CPU comes online +2.6.39/2011-03 | add exclusive_console "feature" to avoid multiple messages +3.3/2012-02 | for scheduler context store in a per-cpu (single message) buffer +3.4/2012-05 | re-implement ringbuffer with variable record structures +3.6/2012-07 | change loglevel markers to SOH (start of header) character +3.7/2012-10 | remove printk tick, use irq_work to trigger syslog waking +3.15/2014-06 | report number of dropped messages +3.18/2014-06 | add per-cpu printk function pointer for per-cpu diversion +4.5/2016-01 | allow scheduler to run between lines when console printing +4.7/2016-05 | flush NMI buffers to ringbuffer on panic +4.10/2016-12 | safe buffers, per-cpu function replaced with per-cpu context variable +4.12/2017-04 | store to ringbuffer from any context (if possible) +4.15/2018-01 | add console owner/waiter logic to hand-off console printing +5.0/2019-02 | finally clean LOG_CONT ordering based on caller identifier + +内核的 `printk()` 函数在普通人想象中应该是个非常简单的函数,只要处理好字符串格式化然后输出到 kernel log 里就好。 + +其实这里隐藏着非常多的复杂问题。 + +这里的核心问题是 kernel 代码必须要能在任何上下文 (context) 都可以调用 `printk()`。 + +在 atomic context 调用的话需要确保 `printk()` 不能导致阻塞,而在 non-maskable interrupts (NMIs) 上下文调用的话甚至连spinlock也不能用了。 + +同时,系统出错时 `printk()` 的输出内容非常重要,开发者不愿意丢掉任何一行信息,哪怕系统就要 crash 或者 hang 住了。 + +这些信息要在 console 设备上打印出来,通常是一个串口,或者是经过显卡显示在屏幕上,或者通过网络连接送出来。此外,`printk()` 不应该干扰系统的正常执行过程。 + +`printk()` 看起来简单并且到处都在用,而它的底层实现其实跟系统的方方面面都搅在一起。 + +内核 0.99.7a 版本里就增加了 console registration(注册机制)。 + +在 0.99.13k 版本里增加了 “log level” 设置。 + +在 2.4.0 里面增加了 `bust_spinlocks()` 机制,用来避免系统 crash 以至于无法正常工作的时候还要进行不必要的等待 spinlock 操作。 + +从 2.4.10 开始,`printk()` 也支持异步(asynchronous)工作模式了。 + +2.6.24 版本之前,`printk()`时不时会导致偶发的特别高的延迟,在这个版本里面大家会在latency tracer里面忽略`printk()`,避免干扰人们的分析。 + +3.4 版本里增加了 structured logging,sequence numbers,以及 `/dev/kmsg` 接口。 + +4.10 里面增加了"safe buffers"机制,用来在 NMI context上 下文来做输出。在 4.15 版本里,修复了一个 bug 可能导致 CPU 不停地输出信息。 + +在 5.0 版本里,加入了 caller identifier (调用者标记)功能。 + +也就是说这么多年来 `printk()` 一直在持续改进,不过仍然有很多遗留问题。 + +其中之一就是关于用来保护 ring buffer 的 raw spinlock,它没法在NMI上下文调用,因此 `printk()` 必须要先输出到不依赖 lock 的 safe buffer 里。 + +这样会导致 message 最终被 copy 到真正的 ring buffer 的时候更新的 timestamp 不精确,也可能会导致 message 丢失,或者导致 CPU 异常 offline 的时候 buffer 没有被刷出去。 + +此外 console 驱动这边也有麻烦,因为它不仅很慢,并且还是在关中断模式下调用的。 + +大多数 console device 设计时都没有考虑过 kernel panic 的场景,在这种最需要它的场景下表现得不够可靠。 + +## printk 代码剖析 + +**先介绍一下 RingBuffer** + +```c +// https://elixir.bootlin.com/linux/v5.18/source/init/Kconfig#L716 +config LOG_BUF_SHIFT + int "Kernel log buffer size (16 => 64KB, 17 => 128KB)" + range 12 25 if !H8300 + range 12 19 if H8300 + default 17 + depends on PRINTK + help + Select the minimal kernel log buffer size as a power of 2. + The final size is affected by LOG_CPU_MAX_BUF_SHIFT config + parameter, see below. Any higher size also might be forced + by "log_buf_len" boot parameter. + + Examples: + 17 => 128 KB + 16 => 64 KB + 15 => 32 KB + 14 => 16 KB + 13 => 8 KB + 12 => 4 KB +``` + +`.config` 中 `CONFIG_LOG_BUF_SHIFT=17`。 + +生成 `autoconf.h`。 + +```c +#define CONFIG_LOG_BUF_SHIFT 17 +``` + +```c +// https://elixir.bootlin.com/linux/v5.18/source/kernel/printk/printk.c#L414 +/* the maximum size of a formatted record (i.e. with prefix added per line) */ +#define CONSOLE_LOG_MAX 1024 + +/* the maximum size allowed to be reserved for a record */ +#define PREFIX_MAX 32 +#define LOG_LINE_MAX (CONSOLE_LOG_MAX - PREFIX_MAX) +/* record buffer */ +#define LOG_ALIGN __alignof__(unsigned long) +#define __LOG_BUF_LEN (1 << CONFIG_LOG_BUF_SHIFT) +#define LOG_BUF_LEN_MAX (u32)(1 << 31) +static char __log_buf[__LOG_BUF_LEN] __aligned(LOG_ALIGN); +static char *log_buf = __log_buf; +static u32 log_buf_len = __LOG_BUF_LEN; +``` + +**分析 `printk` 宏** + +```c +// https://elixir.bootlin.com/linux/v5.18/source/kernel/printk/printk.h#L392 +#define __printk_index_emit(...) do {} while (0) +// :415 +#define printk_index_wrap(_p_func, _fmt, ...) \ + ({ \ + __printk_index_emit(_fmt, NULL, NULL); \ + _p_func(_fmt, ##__VA_ARGS__); \ + }) +// :422 +/** + * printk - print a kernel message + * @fmt: format string + * + * This is printk(). It can be called from any context. We want it to work. + * + * If printk indexing is enabled, _printk() is called from printk_index_wrap. + * Otherwise, printk is simply #defined to _printk. + * + * We try to grab the console_lock. If we succeed, it's easy - we log the + * output and call the console drivers. If we fail to get the semaphore, we + * place the output into the log buffer and return. The current holder of + * the console_sem will notice the new output in console_unlock(); and will + * send it to the consoles before releasing the lock. + * + * One effect of this deferred printing is that code which calls printk() and + * then changes console_loglevel may break. This is because console_loglevel + * is inspected when the actual printing occurs. + * + * See also: + * printf(3) + * + * See the vsnprintf() documentation for format string extensions over C99. + */ +#define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__) +``` + +分析代码得知,最终是调用 `_printk`。 + +```c +// https://elixir.bootlin.com/linux/v5.18/source/kernel/printk/printk.c#L2287 +asmlinkage __visible int _printk(const char *fmt, ...) +{ + va_list args; + int r; + + va_start(args, fmt); + r = vprintk(fmt, args); + va_end(args); + + return r; +} +EXPORT_SYMBOL(_printk); +``` + +`_printk` 参数为可变参数。通过 `man 3 stdarg` 查看可变参数说明。 + +``` +NAME + stdarg, va_start, va_arg, va_end, va_copy - variable argument lists + +SYNOPSIS + #include + + void va_start(va_list ap, last); + type va_arg(va_list ap, type); + void va_end(va_list ap); + void va_copy(va_list dest, va_list src); + +DESCRIPTION + A function may be called with a varying number of arguments of varying types. The include file declares a type va_list and defines three macros for stepping through a list of + arguments whose number and types are not known to the called function. + + The called function must declare an object of type va_list which is used by the macros va_start(), va_arg(), and va_end(). +``` + +`_printk` 内部调用 `vprintk`,接下来分析 `vprintk`。 + +```c +// https://elixir.bootlin.com/linux/v5.18/source/kernel/printk/printk_safe.c#L29 +asmlinkage int vprintk(const char *fmt, va_list args) +{ +#ifdef CONFIG_KGDB_KDB + /* Allow to pass printk() to kdb but avoid a recursion. */ + if (unlikely(kdb_trap_printk && kdb_printf_cpu < 0)) + return vkdb_printf(KDB_MSGSRC_PRINTK, fmt, args); +#endif + + /* + * Use the main logbuf even in NMI. But avoid calling console + * drivers that might have their own locks. + */ + if (this_cpu_read(printk_context) || in_nmi()) { + int len; + + len = vprintk_store(0, LOGLEVEL_DEFAULT, NULL, fmt, args); + defer_console_output(); + return len; + } + + /* No obstacles. */ + return vprintk_default(fmt, args); +} +EXPORT_SYMBOL(vprintk); +``` + +`vprintk 会调用 `vprintk_store` 和 `vprintk_default`。 + +1. `vprintk_store` 格式化字符串到 log_buf。 +2. `vprintk_default` 打印到 console。 + +**我们先分析如何格式化字符串** + +```c +// https://elixir.bootlin.com/linux/v5.18/source/kernel/printk/printk.c#L2122 +int vprintk_store(int facility, int level, + const struct dev_printk_info *dev_info, + const char *fmt, va_list args) +{ + // ... + /* + * The sprintf needs to come first since the syslog prefix might be + * passed in as a parameter. An extra byte must be reserved so that + * later the vscnprintf() into the reserved buffer has room for the + * terminating '\0', which is not counted by vsnprintf(). + */ + va_copy(args2, args); + reserve_size = vsnprintf(&prefix_buf[0], sizeof(prefix_buf), fmt, args2) + 1; + va_end(args2); + + if (reserve_size > LOG_LINE_MAX) + reserve_size = LOG_LINE_MAX; + // ... + /* fill message */ + text_len = printk_sprint(&r.text_buf[0], reserve_size, facility, &flags, fmt, args); + // ... +} +``` + +`vprintk_store 会调用 `printk_sprint`。 + +![Calls-printk_sprint](./images/printk/Calls-printk_sprint.png) + +```c +// https://elixir.bootlin.com/linux/v5.18/source/kernel/printk/printk.c#L2093 +static u16 printk_sprint(char *text, u16 size, int facility, + enum printk_info_flags *flags, const char *fmt, + va_list args) +{ + u16 text_len; + + text_len = vscnprintf(text, size, fmt, args); + + /* Mark and strip a trailing newline. */ + if (text_len && text[text_len - 1] == '\n') { + text_len--; + *flags |= LOG_NEWLINE; + } + + /* Strip log level and control flags. */ + if (facility == 0) { + u16 prefix_len; + + prefix_len = printk_parse_prefix(text, NULL, NULL); + if (prefix_len) { + text_len -= prefix_len; + memmove(text, text + prefix_len, text_len); + } + } + + return text_len; +} +``` + +`printk_sprint` 会调用 `vsnprintf`。代码注释中有说明。 + +```c +/** + * vscnprintf - Format a string and place it in a buffer + * @buf: The buffer to place the result into + * @size: The size of the buffer, including the trailing null space + * @fmt: The format string to use + * @args: Arguments for the format string + * + * The return value is the number of characters which have been written into + * the @buf not including the trailing '\0'. If @size is == 0 the function + * returns 0. + * + * If you're not already dealing with a va_list consider using scnprintf(). + * + * See the vsnprintf() documentation for format string extensions over C99. + */ +int vscnprintf(char *buf, size_t size, const char *fmt, va_list args) +{ + int i; + + if (unlikely(!size)) + return 0; + + i = vsnprintf(buf, size, fmt, args); + + if (likely(i < size)) + return i; + + return size - 1; +} +EXPORT_SYMBOL(vscnprintf); +``` + +`vprintk_store` 和 `vscnprintf` 都会调用 `vsnprintf`。 + +> The functions vprintf(), vfprintf(), vdprintf(), vsprintf(), vsnprintf() are equivalent to the functions printf(), fprintf(), dprintf(), sprintf(), snprintf(), respectively, except that +> they are called with a va_list instead of a variable number of arguments. These functions do not call the va_end macro. Because they invoke the va_arg macro, the value of ap is undefined +> after the call. See stdarg(3). + +```c +// https://elixir.bootlin.com/linux/v5.18/source/kernel/printk/printk.c#L2708 +/** + * vsnprintf - Format a string and place it in a buffer + * @buf: The buffer to place the result into + * @size: The size of the buffer, including the trailing null space + * @fmt: The format string to use + * @args: Arguments for the format string + * + * This function generally follows C99 vsnprintf, but has some + * extensions and a few limitations: + * + * - ``%n`` is unsupported + * - ``%p*`` is handled by pointer() + * + * See pointer() or Documentation/core-api/printk-formats.rst for more + * extensive description. + * + * **Please update the documentation in both places when making changes** + * + * The return value is the number of characters which would + * be generated for the given input, excluding the trailing + * '\0', as per ISO C99. If you want to have the exact + * number of characters written into @buf as return value + * (not including the trailing '\0'), use vscnprintf(). If the + * return is greater than or equal to @size, the resulting + * string is truncated. + * + * If you're not already dealing with a va_list consider using snprintf(). + */ +int vsnprintf(char *buf, size_t size, const char *fmt, va_list args) +{ + unsigned long long num; + char *str, *end; + struct printf_spec spec = {0}; + + /* Reject out-of-range values early. Large positive sizes are + used for unknown buffer sizes. */ + if (WARN_ON_ONCE(size > INT_MAX)) + return 0; + + str = buf; + end = buf + size; + + /* Make sure end is always >= buf */ + if (end < buf) { + end = ((void *)-1); + size = end - buf; + } + + while (*fmt) { + const char *old_fmt = fmt; + int read = format_decode(fmt, &spec); + + fmt += read; + + switch (spec.type) { + case FORMAT_TYPE_NONE: { + int copy = read; + if (str < end) { + if (copy > end - str) + copy = end - str; + memcpy(str, old_fmt, copy); + } + str += read; + break; + } + + case FORMAT_TYPE_WIDTH: + set_field_width(&spec, va_arg(args, int)); + break; + + case FORMAT_TYPE_PRECISION: + set_precision(&spec, va_arg(args, int)); + break; + + case FORMAT_TYPE_CHAR: { + char c; + + if (!(spec.flags & LEFT)) { + while (--spec.field_width > 0) { + if (str < end) + *str = ' '; + ++str; + + } + } + c = (unsigned char) va_arg(args, int); + if (str < end) + *str = c; + ++str; + while (--spec.field_width > 0) { + if (str < end) + *str = ' '; + ++str; + } + break; + } + + case FORMAT_TYPE_STR: + str = string(str, end, va_arg(args, char *), spec); + break; + + case FORMAT_TYPE_PTR: + str = pointer(fmt, str, end, va_arg(args, void *), + spec); + while (isalnum(*fmt)) + fmt++; + break; + + case FORMAT_TYPE_PERCENT_CHAR: + if (str < end) + *str = '%'; + ++str; + break; + + case FORMAT_TYPE_INVALID: + /* + * Presumably the arguments passed gcc's type + * checking, but there is no safe or sane way + * for us to continue parsing the format and + * fetching from the va_list; the remaining + * specifiers and arguments would be out of + * sync. + */ + goto out; + + default: + switch (spec.type) { + case FORMAT_TYPE_LONG_LONG: + num = va_arg(args, long long); + break; + case FORMAT_TYPE_ULONG: + num = va_arg(args, unsigned long); + break; + case FORMAT_TYPE_LONG: + num = va_arg(args, long); + break; + case FORMAT_TYPE_SIZE_T: + if (spec.flags & SIGN) + num = va_arg(args, ssize_t); + else + num = va_arg(args, size_t); + break; + case FORMAT_TYPE_PTRDIFF: + num = va_arg(args, ptrdiff_t); + break; + case FORMAT_TYPE_UBYTE: + num = (unsigned char) va_arg(args, int); + break; + case FORMAT_TYPE_BYTE: + num = (signed char) va_arg(args, int); + break; + case FORMAT_TYPE_USHORT: + num = (unsigned short) va_arg(args, int); + break; + case FORMAT_TYPE_SHORT: + num = (short) va_arg(args, int); + break; + case FORMAT_TYPE_INT: + num = (int) va_arg(args, int); + break; + default: + num = va_arg(args, unsigned int); + } + + str = number(str, end, num, spec); + } + } + +out: + if (size > 0) { + if (str < end) + *str = '\0'; + else + end[-1] = '\0'; + } + + /* the trailing null byte doesn't count towards the total */ + return str-buf; + +} +EXPORT_SYMBOL(vsnprintf); +``` + +**接下来再分析如何输出字符串** + +`vprintk_default` 打印到 console。 + +`vprintk_default` 直接调用 `vprintk_emit`。 + +``` +// https://elixir.bootlin.com/linux/v5.18/source/kernel/printk/printk.c#L2233 +asmlinkage int vprintk_emit(int facility, int level, + const struct dev_printk_info *dev_info, + const char *fmt, va_list args) +{ + int printed_len; + bool in_sched = false; + + /* Suppress unimportant messages after panic happens */ + if (unlikely(suppress_printk)) + return 0; + + if (unlikely(suppress_panic_printk) && + atomic_read(&panic_cpu) != raw_smp_processor_id()) + return 0; + + if (level == LOGLEVEL_SCHED) { + level = LOGLEVEL_DEFAULT; + in_sched = true; + } + + boot_delay_msec(level); + printk_delay(); + + printed_len = vprintk_store(facility, level, dev_info, fmt, args); + + /* If called from the scheduler, we can not call up(). */ + if (!in_sched) { + /* + * Disable preemption to avoid being preempted while holding + * console_sem which would prevent anyone from printing to + * console + */ + preempt_disable(); + /* + * Try to acquire and then immediately release the console + * semaphore. The release will print out buffers and wake up + * /dev/kmsg and syslog() users. + */ + if (console_trylock_spinning()) + console_unlock(); + preempt_enable(); + } + + wake_up_klogd(); + return printed_len; +} +EXPORT_SYMBOL(vprintk_emit); + +int vprintk_default(const char *fmt, va_list args) +{ + return vprintk_emit(0, LOGLEVEL_DEFAULT, NULL, fmt, args); +} +EXPORT_SYMBOL_GPL(vprintk_default); +``` + +最后调用 `console_unlock()`。 + +首先根据 con_start 和 log_end 来检查是否有需要在终端上打印的消息。 + +如果有则开始使用 call_console_drivers 调用 console 关联的底层驱动程序进行最终的消息打印操作。 + +```c +// https://elixir.bootlin.com/linux/v5.18/source/kernel/printk/printk.c#L2646 +/** + * console_unlock - unlock the console system + * + * Releases the console_lock which the caller holds on the console system + * and the console driver list. + * + * While the console_lock was held, console output may have been buffered + * by printk(). If this is the case, console_unlock(); emits + * the output prior to releasing the lock. + * + * If there is output waiting, we wake /dev/kmsg and syslog() users. + * + * console_unlock(); may be called from any context. + */ +void console_unlock(void) +{ + // ... + for (;;) { + stop_critical_timings(); /* don't trace print latency */ + call_console_drivers(ext_text, ext_len, text, len); + start_critical_timings(); + } + // ... +} +``` + +`call_console_drivers` 最终调用不同 console 关联的写操作 `con->write` 实现打印操作。 + +```c +// https://elixir.bootlin.com/linux/v5.18/source/kernel/printk/printk.c#L1913 +/* + * Call the console drivers, asking them to write out + * log_buf[start] to log_buf[end - 1]. + * The console_lock must be held. + */ +static void call_console_drivers(const char *ext_text, size_t ext_len, + const char *text, size_t len) +{ + static char dropped_text[64]; + size_t dropped_len = 0; + struct console *con; + + trace_console_rcuidle(text, len); + + if (!console_drivers) + return; + + if (console_dropped) { + dropped_len = snprintf(dropped_text, sizeof(dropped_text), + "** %lu printk messages dropped **\n", + console_dropped); + console_dropped = 0; + } + + for_each_console(con) { + if (exclusive_console && con != exclusive_console) + continue; + if (!(con->flags & CON_ENABLED)) + continue; + if (!con->write) + continue; + if (!cpu_online(smp_processor_id()) && + !(con->flags & CON_ANYTIME)) + continue; + if (con->flags & CON_EXTENDED) + con->write(con, ext_text, ext_len); + else { + if (dropped_len) + con->write(con, dropped_text, dropped_len); + con->write(con, text, len); + } + } +} +``` + +`for_each_console` 是一个宏,用来遍历 console_drivers。 + +```c +// https://elixir.bootlin.com/linux/v5.18/source/include/linux/console.h#L140 +struct console { + char name[16]; + void (*write)(struct console *, const char *, unsigned); + int (*read)(struct console *, char *, unsigned); + struct tty_driver *(*device)(struct console *, int *); + void (*unblank)(void); + int (*setup)(struct console *, char *); + int (*exit)(struct console *); + int (*match)(struct console *, char *name, int idx, char *options); + short flags; + short index; + int cflag; + uint ispeed; + uint ospeed; + void *data; + struct console *next; +}; + +/* + * for_each_console() allows you to iterate on each console + */ +#define for_each_console(con) \ + for (con = console_drivers; con != NULL; con = con->next) + +// https://elixir.bootlin.com/linux/v5.18/source/kernel/printk/printk.c#L1913 +struct console *console_drivers; +``` + +## 总结 + +![printk](./images/printk/Calls-_printk.png) + +* `printk` 函数第一步是解析参数列表,然后对带有参数的字符串进行格式化,并放入到 log_buf 中。 +* 当 log_buf 中有需要打印的信息时,则调用 console 所关联的驱动程序完成最终的打印操作。 +* 在 `call_console_drivers` 中调用 console 所关联的驱动时会先判断 `con->write` 是否存在。 +* 如果 `con->write` 不存在,则不会在终端中有信息输出,即直接忽略这次打印。 +* 然而在 `linux` 内核启动初期就已经开始调用 `printk` 函数了,而此时还并没注册 `console` 设备,就更不可能存在 `con->write` 了。 +* 那这个阶段调用 printk 输出的信息岂不是都丢了? +* 然而事实并不是这样子的,这就是 early console 相关的内容,有时间再介绍。 + +## 参考 + +1. [Difference between `printk()` and Printf() in Linux](https://www.geeksforgeeks.org/difference-between-printk-and-printf-in-linux/) +2. [Message logging with printk](https://www.kernel.org/doc/html/latest/core-api/printk-basics.html) +3. [Why `printk()` is so complicated (and how to fix it)](https://lwn.net/Articles/800946/) +4. [printk流程分析](https://zhuanlan.zhihu.com/p/266542404) diff --git a/articles/images/printk/Calls-_printk.png b/articles/images/printk/Calls-_printk.png new file mode 100644 index 0000000000000000000000000000000000000000..b0e05e1ccb5fa27b40b49d1eeebe411dfc8ea917 GIT binary patch literal 22587 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 literal 0 HcmV?d00001 diff --git a/articles/images/printk/Calls-printk_sprint.png b/articles/images/printk/Calls-printk_sprint.png new file mode 100644 index 0000000000000000000000000000000000000000..e5a8af302ebbd162dc3628ea0daad5272c72935d GIT binary patch literal 31132 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 Date: Thu, 9 Jun 2022 16:49:23 +0800 Subject: [PATCH 2/2] fixup printk: add reference --- articles/20220606-linux-printk.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/articles/20220606-linux-printk.md b/articles/20220606-linux-printk.md index 713d6df..2c5eb24 100644 --- a/articles/20220606-linux-printk.md +++ b/articles/20220606-linux-printk.md @@ -12,7 +12,9 @@ printk 是一个 Linux 内核接口 C 函数,它将消息输出到内核日志,而 printf 命令用于在终端窗口中显示字符串,数字或任何其他格式说明符。 -最著名的Linux内核函数之一是`printk()`。。它是用于打印消息的默认工具,也是跟踪和调试的最基本方法。printf() 方法将参数打印到 stdout 流中,这些参数写在双倒引号中。 +最著名的 Linux 内核函数之一是 `printk()`。 + +它是用于打印消息的默认工具,也是跟踪和调试的最基本方法。`printf()` 方法将参数打印到 stdout 流中,这些参数写在双引号中。 `printk()` | printf() ---|--- @@ -791,3 +793,4 @@ struct console *console_drivers; 2. [Message logging with printk](https://www.kernel.org/doc/html/latest/core-api/printk-basics.html) 3. [Why `printk()` is so complicated (and how to fix it)](https://lwn.net/Articles/800946/) 4. [printk流程分析](https://zhuanlan.zhihu.com/p/266542404) +5. [printk() - The most useful tool](https://elinux.org/images/7/7c/Elce-printk-v1.pdf) -- Gitee