linux/arch/arm/kernel/early_printk.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0-only
   2/*
   3 *  linux/arch/arm/kernel/early_printk.c
   4 *
   5 *  Copyright (C) 2009 Sascha Hauer <s.hauer@pengutronix.de>
   6 */
   7
   8#include <linux/kernel.h>
   9#include <linux/console.h>
  10#include <linux/init.h>
  11#include <linux/string.h>
  12
  13extern void printascii(const char *);
  14
  15static void early_write(const char *s, unsigned n)
  16{
  17        char buf[128];
  18        while (n) {
  19                unsigned l = min(n, sizeof(buf)-1);
  20                memcpy(buf, s, l);
  21                buf[l] = 0;
  22                s += l;
  23                n -= l;
  24                printascii(buf);
  25        }
  26}
  27
  28static void early_console_write(struct console *con, const char *s, unsigned n)
  29{
  30        early_write(s, n);
  31}
  32
  33static struct console early_console_dev = {
  34        .name =         "earlycon",
  35        .write =        early_console_write,
  36        .flags =        CON_PRINTBUFFER | CON_BOOT,
  37        .index =        -1,
  38};
  39
  40static int __init setup_early_printk(char *buf)
  41{
  42        early_console = &early_console_dev;
  43        register_console(&early_console_dev);
  44        return 0;
  45}
  46
  47early_param("earlyprintk", setup_early_printk);
  48