coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
printk.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <bl_uapp/bl_syscall_public.h>
4 #include <console/console.h>
6 #include <console/streams.h>
7 #include <console/uart.h>
8 #include <stdarg.h>
9 
10 void console_hw_init(void)
11 {
12  __cbmemc_init();
13  __uart_init();
14 }
15 
16 int printk(int msg_level, const char *fmt, ...)
17 {
18  va_list args;
19  int i;
20 
21  va_start(args, fmt);
22  i = vprintk(msg_level, fmt, args);
23  va_end(args);
24 
25  return i;
26 }
27 
28 int vprintk(int msg_level, const char *fmt, va_list args)
29 {
30  int i, cnt, log_this;
31  char buf[256];
32 
33  log_this = console_log_level(msg_level);
34  if (log_this < CONSOLE_LOG_FAST)
35  return 0;
36 
37  cnt = vsnprintf(buf, sizeof(buf), fmt, args);
38  for (i = 0; i < cnt; i++) {
40 
41  if (buf[i] == '\n')
42  __uart_tx_byte('\r');
43  __uart_tx_byte(buf[i]);
44  }
46  return i;
47 }
static void __cbmemc_init(void)
Definition: cbmem_console.h:20
static void __cbmemc_tx_byte(u8 data)
Definition: cbmem_console.h:21
void svc_debug_print(const char *string)
Definition: svc.c:16
struct @413::@414 args
int vprintk(int msg_level, const char *fmt, va_list args)
Definition: printk.c:128
int printk(int msg_level, const char *fmt,...)
Definition: printk.c:155
static void __uart_init(void)
Definition: uart.h:82
static void __uart_tx_byte(u8 data)
Definition: uart.h:83
int console_log_level(int msg_level)
Definition: init.c:33
static uint8_t * buf
Definition: uart.c:7
void console_hw_init(void)
Definition: printk.c:10
#define va_end(v)
Definition: stdarg.h:14
#define va_start(v, l)
Note: This file is only for POSIX compatibility, and is meant to be chain-included via string....
Definition: stdarg.h:13
__builtin_va_list va_list
Definition: stdarg.h:16
int vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
Definition: vsprintf.c:21