blob: 4ace56f963043ca2279f09f1cf8f1288c28c2c17 [file] [log] [blame]
Andrew Boied5feec52015-09-18 09:57:13 -07001/* ram_console.c - Console messages to a RAM buffer */
2
3/*
4 * Copyright (c) 2015 Intel Corporation
5 *
David B. Kinderac74d8b2017-01-18 17:01:01 -08006 * SPDX-License-Identifier: Apache-2.0
Andrew Boied5feec52015-09-18 09:57:13 -07007 */
8
9
Gerard Marull-Paretasfb60aab2022-05-06 10:25:46 +020010#include <zephyr/kernel.h>
11#include <zephyr/sys/printk.h>
12#include <zephyr/device.h>
13#include <zephyr/init.h>
Andrew Boied5feec52015-09-18 09:57:13 -070014
15extern void __printk_hook_install(int (*fn)(int));
16extern void __stdout_hook_install(int (*fn)(int));
17
18/* Extra byte to ensure we're always NULL-terminated */
19char ram_console[CONFIG_RAM_CONSOLE_BUFFER_SIZE + 1];
20static int pos;
21
22static int ram_console_out(int character)
23{
24 ram_console[pos] = (char)character;
25 pos = (pos + 1) % CONFIG_RAM_CONSOLE_BUFFER_SIZE;
26 return character;
27}
28
Gerard Marull-Paretasa5fd0d12022-10-19 09:33:44 +020029static int ram_console_init(void)
Andrew Boied5feec52015-09-18 09:57:13 -070030{
Andrew Boied5feec52015-09-18 09:57:13 -070031 __printk_hook_install(ram_console_out);
32 __stdout_hook_install(ram_console_out);
33
Andre Guedes024cfe72016-03-09 14:01:20 -030034 return 0;
Andrew Boied5feec52015-09-18 09:57:13 -070035}
36
Maureen Helm43fa7ce2021-10-21 13:29:33 -050037SYS_INIT(ram_console_init, PRE_KERNEL_1, CONFIG_CONSOLE_INIT_PRIORITY);