mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	rv/reactor: Add the printk reactor
A reactor that printks the reaction message. Link: https://lkml.kernel.org/r/b65f18a7fd6dc6659a3008fd7b7392de3465d47b.1659052063.git.bristot@kernel.org Cc: Wim Van Sebroeck <wim@linux-watchdog.org> Cc: Guenter Roeck <linux@roeck-us.net> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Ingo Molnar <mingo@redhat.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Will Deacon <will@kernel.org> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Marco Elver <elver@google.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: "Paul E. McKenney" <paulmck@kernel.org> Cc: Shuah Khan <skhan@linuxfoundation.org> Cc: Gabriele Paoloni <gpaoloni@redhat.com> Cc: Juri Lelli <juri.lelli@redhat.com> Cc: Clark Williams <williams@redhat.com> Cc: Tao Zhou <tao.zhou@linux.dev> Cc: Randy Dunlap <rdunlap@infradead.org> Cc: linux-doc@vger.kernel.org Cc: linux-kernel@vger.kernel.org Cc: linux-trace-devel@vger.kernel.org Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
This commit is contained in:
		
							parent
							
								
									ccc319dcb4
								
							
						
					
					
						commit
						135b881ea8
					
				
					 3 changed files with 52 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -60,3 +60,11 @@ config RV_REACTORS
 | 
			
		|||
	  on the model's execution. By default, the monitors have
 | 
			
		||||
	  tracing reactions, printing the monitor output via tracepoints,
 | 
			
		||||
	  but other reactions can be added (on-demand) via this interface.
 | 
			
		||||
 | 
			
		||||
config RV_REACT_PRINTK
 | 
			
		||||
	bool "Printk reactor"
 | 
			
		||||
	depends on RV_REACTORS
 | 
			
		||||
	default y
 | 
			
		||||
	help
 | 
			
		||||
	  Enables the printk reactor. The printk reactor emits a printk()
 | 
			
		||||
	  message if an exception is found.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
# SPDX-License-Identifier: GPL-2.0
 | 
			
		||||
 | 
			
		||||
obj-$(CONFIG_RV) += rv.o
 | 
			
		||||
obj-$(CONFIG_RV_REACTORS) += rv_reactors.o
 | 
			
		||||
obj-$(CONFIG_RV_MON_WIP) += monitors/wip/wip.o
 | 
			
		||||
obj-$(CONFIG_RV_MON_WWNR) += monitors/wwnr/wwnr.o
 | 
			
		||||
obj-$(CONFIG_RV_REACTORS) += rv_reactors.o
 | 
			
		||||
obj-$(CONFIG_RV_REACT_PRINTK) += reactor_printk.o
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										42
									
								
								kernel/trace/rv/reactor_printk.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								kernel/trace/rv/reactor_printk.c
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,42 @@
 | 
			
		|||
// SPDX-License-Identifier: GPL-2.0
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2019-2022 Red Hat, Inc. Daniel Bristot de Oliveira <bristot@kernel.org>
 | 
			
		||||
 *
 | 
			
		||||
 * Printk RV reactor:
 | 
			
		||||
 *   Prints the exception msg to the kernel message log.
 | 
			
		||||
 */
 | 
			
		||||
#include <linux/ftrace.h>
 | 
			
		||||
#include <linux/tracepoint.h>
 | 
			
		||||
#include <linux/kernel.h>
 | 
			
		||||
#include <linux/module.h>
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <linux/rv.h>
 | 
			
		||||
 | 
			
		||||
static void rv_printk_reaction(char *msg)
 | 
			
		||||
{
 | 
			
		||||
	printk_deferred(msg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static struct rv_reactor rv_printk = {
 | 
			
		||||
	.name = "printk",
 | 
			
		||||
	.description = "prints the exception msg to the kernel message log.",
 | 
			
		||||
	.react = rv_printk_reaction
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static int register_react_printk(void)
 | 
			
		||||
{
 | 
			
		||||
	rv_register_reactor(&rv_printk);
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void unregister_react_printk(void)
 | 
			
		||||
{
 | 
			
		||||
	rv_unregister_reactor(&rv_printk);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module_init(register_react_printk);
 | 
			
		||||
module_exit(unregister_react_printk);
 | 
			
		||||
 | 
			
		||||
MODULE_LICENSE("GPL");
 | 
			
		||||
MODULE_AUTHOR("Daniel Bristot de Oliveira");
 | 
			
		||||
MODULE_DESCRIPTION("printk rv reactor: printk if an exception is hit.");
 | 
			
		||||
		Loading…
	
		Reference in a new issue