diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 4832eb461df1..f4c7a1938511 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -43,6 +43,7 @@ #include #include #include +#include /* * Export tracepoints that act as a bare tracehook (ie: have no trace event @@ -199,3 +200,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_bpf_syscall); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_cpus_allowed_ptr_locked); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_rto_next_cpu); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_em_dev_register_pd); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_logbuf); diff --git a/include/trace/hooks/logbuf.h b/include/trace/hooks/logbuf.h new file mode 100644 index 000000000000..a599bf8c2cbf --- /dev/null +++ b/include/trace/hooks/logbuf.h @@ -0,0 +1,26 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM logbuf + +#define TRACE_INCLUDE_PATH trace/hooks + +#if !defined(_TRACE_HOOK_LOGBUF_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_HOOK_LOGBUF_H + +#include +#include + +#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS) +struct printk_ringbuffer; +struct printk_record; + +DECLARE_HOOK(android_vh_logbuf, + TP_PROTO(struct printk_ringbuffer *rb, struct printk_record *r), + TP_ARGS(rb, r)) +#else +#define trace_android_vh_logbuf(rb, r) +#endif + +#endif /* _TRACE_HOOK_LOGBUF_H */ +/* This part must be outside protection */ +#include diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 0ae0bcb941bd..aad43ad4369d 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -56,6 +56,7 @@ #include #undef CREATE_TRACE_POINTS #include +#include #include "printk_ringbuffer.h" #include "console_cmdline.h" @@ -2202,6 +2203,7 @@ int vprintk_store(int facility, int level, else prb_final_commit(&e); + trace_android_vh_logbuf(prb, &r); ret = text_len + trunc_msg_len; out: printk_exit_irqrestore(recursion_ptr, irqflags);