internal.h (1713B)
1/* SPDX-License-Identifier: GPL-2.0-or-later */ 2/* 3 * internal.h - printk internal definitions 4 */ 5#include <linux/percpu.h> 6 7#if defined(CONFIG_PRINTK) && defined(CONFIG_SYSCTL) 8void __init printk_sysctl_init(void); 9int devkmsg_sysctl_set_loglvl(struct ctl_table *table, int write, 10 void *buffer, size_t *lenp, loff_t *ppos); 11#else 12#define printk_sysctl_init() do { } while (0) 13#endif 14 15#ifdef CONFIG_PRINTK 16 17/* Flags for a single printk record. */ 18enum printk_info_flags { 19 LOG_NEWLINE = 2, /* text ended with a newline */ 20 LOG_CONT = 8, /* text is a fragment of a continuation line */ 21}; 22 23__printf(4, 0) 24int vprintk_store(int facility, int level, 25 const struct dev_printk_info *dev_info, 26 const char *fmt, va_list args); 27 28__printf(1, 0) int vprintk_default(const char *fmt, va_list args); 29__printf(1, 0) int vprintk_deferred(const char *fmt, va_list args); 30 31bool printk_percpu_data_ready(void); 32 33#define printk_safe_enter_irqsave(flags) \ 34 do { \ 35 local_irq_save(flags); \ 36 __printk_safe_enter(); \ 37 } while (0) 38 39#define printk_safe_exit_irqrestore(flags) \ 40 do { \ 41 __printk_safe_exit(); \ 42 local_irq_restore(flags); \ 43 } while (0) 44 45void defer_console_output(void); 46 47u16 printk_parse_prefix(const char *text, int *level, 48 enum printk_info_flags *flags); 49#else 50 51/* 52 * In !PRINTK builds we still export console_sem 53 * semaphore and some of console functions (console_unlock()/etc.), so 54 * printk-safe must preserve the existing local IRQ guarantees. 55 */ 56#define printk_safe_enter_irqsave(flags) local_irq_save(flags) 57#define printk_safe_exit_irqrestore(flags) local_irq_restore(flags) 58 59static inline bool printk_percpu_data_ready(void) { return false; } 60#endif /* CONFIG_PRINTK */