aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVasant Hegde <hegdevasant@linux.vnet.ibm.com>2014-08-09 11:15:30 +0530
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2014-08-13 15:13:44 +1000
commit14c4000a88afaaa2d0877cc86d42a74fde0f35e0 (patch)
treeb4133597b6990120a60302cf6b677b463bbc1752
parent3609e09fd824c37df6f2bf13caa88f6f54a11922 (diff)
downloadvirtio-14c4000a88afaaa2d0877cc86d42a74fde0f35e0.tar.gz
printk: Add function to return log buffer address and size
Platforms like IBM Power Systems supports service processor assisted dump. It provides interface to add memory region to be captured when system is crashed. During initialization/running we can add kernel memory region to be collected. Presently we don't have a way to get the log buffer base address and size. This patch adds support to return log buffer address and size. Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Acked-by: Andrew Morton <akpm@linux-foundation.org>
-rw-r--r--include/linux/printk.h3
-rw-r--r--kernel/printk/printk.c12
2 files changed, 15 insertions, 0 deletions
diff --git a/include/linux/printk.h b/include/linux/printk.h
index 0990997a5304b..d78125f73ac4f 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -10,6 +10,9 @@
extern const char linux_banner[];
extern const char linux_proc_banner[];
+extern char *log_buf_addr_get(void);
+extern u32 log_buf_len_get(void);
+
static inline int printk_get_level(const char *buffer)
{
if (buffer[0] == KERN_SOH_ASCII && buffer[1]) {
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index de1a6bb6861db..e04c455a0e386 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -272,6 +272,18 @@ static char __log_buf[__LOG_BUF_LEN] __aligned(LOG_ALIGN);
static char *log_buf = __log_buf;
static u32 log_buf_len = __LOG_BUF_LEN;
+/* Return log buffer address */
+char *log_buf_addr_get(void)
+{
+ return log_buf;
+}
+
+/* Return log buffer size */
+u32 log_buf_len_get(void)
+{
+ return log_buf_len;
+}
+
/* human readable text of the record */
static char *log_text(const struct printk_log *msg)
{