return idx + msg->len;
}
+#ifdef CONFIG_RK_LAST_LOG
+extern void rk_last_log_text(char *text, size_t size);
+static char rk_text[1024];
+static size_t msg_print_text(const struct log *msg, enum log_flags prev,
+ bool syslog, char *buf, size_t size);
+#endif
/* insert record into the buffer, discard old ones, update heads */
static void log_store(int facility, int level,
enum log_flags flags, u64 ts_nsec,
memset(log_dict(msg) + dict_len, 0, pad_len);
msg->len = sizeof(struct log) + text_len + dict_len + pad_len;
+#ifdef CONFIG_RK_LAST_LOG
+ size = msg_print_text(msg, msg->flags, true, rk_text, sizeof(rk_text));
+ rk_last_log_text(rk_text, size);
+#endif
/* insert message */
log_next_idx += msg->len;
log_next_seq++;
}
EXPORT_SYMBOL(printk);
-#ifdef CONFIG_RK_LAST_LOG
-void __init switch_log_buf(char *new_log_buf, unsigned size)
+#if defined(CONFIG_RK_DEBUG_UART) && (CONFIG_RK_DEBUG_UART >= 0)
+void console_disable_suspend(void)
{
- unsigned long flags;
-
- if (!new_log_buf || log_buf_len > size)
- return;
-
- raw_spin_lock_irqsave(&logbuf_lock, flags);
- memcpy(new_log_buf, log_buf, min(log_buf_len, size));
- log_buf = new_log_buf;
- log_buf_len = size;
- raw_spin_unlock_irqrestore(&logbuf_lock, flags);
+ console_suspended = 0;
}
-#endif /* CONFIG_RK_LAST_LOG */
+#endif
#else /* CONFIG_PRINTK */
#define LOG_LINE_MAX 0