xref: /openbmc/linux/kernel/trace/rv/reactor_printk.c (revision 2fd5ed8b)
1135b881eSDaniel Bristot de Oliveira // SPDX-License-Identifier: GPL-2.0
2135b881eSDaniel Bristot de Oliveira /*
3135b881eSDaniel Bristot de Oliveira  * Copyright (C) 2019-2022 Red Hat, Inc. Daniel Bristot de Oliveira <bristot@kernel.org>
4135b881eSDaniel Bristot de Oliveira  *
5135b881eSDaniel Bristot de Oliveira  * Printk RV reactor:
6135b881eSDaniel Bristot de Oliveira  *   Prints the exception msg to the kernel message log.
7135b881eSDaniel Bristot de Oliveira  */
8135b881eSDaniel Bristot de Oliveira #include <linux/ftrace.h>
9135b881eSDaniel Bristot de Oliveira #include <linux/tracepoint.h>
10135b881eSDaniel Bristot de Oliveira #include <linux/kernel.h>
11135b881eSDaniel Bristot de Oliveira #include <linux/module.h>
12135b881eSDaniel Bristot de Oliveira #include <linux/init.h>
13135b881eSDaniel Bristot de Oliveira #include <linux/rv.h>
14135b881eSDaniel Bristot de Oliveira 
rv_printk_reaction(char * msg)15135b881eSDaniel Bristot de Oliveira static void rv_printk_reaction(char *msg)
16135b881eSDaniel Bristot de Oliveira {
17135b881eSDaniel Bristot de Oliveira 	printk_deferred(msg);
18135b881eSDaniel Bristot de Oliveira }
19135b881eSDaniel Bristot de Oliveira 
20135b881eSDaniel Bristot de Oliveira static struct rv_reactor rv_printk = {
21135b881eSDaniel Bristot de Oliveira 	.name = "printk",
22135b881eSDaniel Bristot de Oliveira 	.description = "prints the exception msg to the kernel message log.",
23135b881eSDaniel Bristot de Oliveira 	.react = rv_printk_reaction
24135b881eSDaniel Bristot de Oliveira };
25135b881eSDaniel Bristot de Oliveira 
register_react_printk(void)26*93d71986SXiu Jianfeng static int __init register_react_printk(void)
27135b881eSDaniel Bristot de Oliveira {
28135b881eSDaniel Bristot de Oliveira 	rv_register_reactor(&rv_printk);
29135b881eSDaniel Bristot de Oliveira 	return 0;
30135b881eSDaniel Bristot de Oliveira }
31135b881eSDaniel Bristot de Oliveira 
unregister_react_printk(void)32*93d71986SXiu Jianfeng static void __exit unregister_react_printk(void)
33135b881eSDaniel Bristot de Oliveira {
34135b881eSDaniel Bristot de Oliveira 	rv_unregister_reactor(&rv_printk);
35135b881eSDaniel Bristot de Oliveira }
36135b881eSDaniel Bristot de Oliveira 
37135b881eSDaniel Bristot de Oliveira module_init(register_react_printk);
38135b881eSDaniel Bristot de Oliveira module_exit(unregister_react_printk);
39135b881eSDaniel Bristot de Oliveira 
40135b881eSDaniel Bristot de Oliveira MODULE_AUTHOR("Daniel Bristot de Oliveira");
41135b881eSDaniel Bristot de Oliveira MODULE_DESCRIPTION("printk rv reactor: printk if an exception is hit.");
42