linux/kernel/printk/internal.h
<<
>>
Prefs
   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 */
  61