summaryrefslogtreecommitdiff
path: root/kernel/printk.c
diff options
context:
space:
mode:
authorArve Hjønnevåg <arve@android.com>2009-01-15 19:07:27 -0800
committerColin Cross <ccross@android.com>2010-09-29 17:49:19 -0700
commit916040d8b90d025d4445e97f3795907a6b65996c (patch)
tree49e697596391a541bf639087f75dd1967acb62ee /kernel/printk.c
parent1b15b8e197ecc7b88b05b533ee55e06b990722c9 (diff)
Revert "printk: remove unused code from kernel/printk.c"
This reverts commit acff181d3574244e651913df77332e897b88bff4.
Diffstat (limited to 'kernel/printk.c')
-rw-r--r--kernel/printk.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/kernel/printk.c b/kernel/printk.c
index b11cffec38fc..33d6dcdb4909 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -265,6 +265,60 @@ static inline void boot_delay_msec(void)
}
#endif
+/*
+ * Return the number of unread characters in the log buffer.
+ */
+static int log_buf_get_len(void)
+{
+ return logged_chars;
+}
+
+/*
+ * Copy a range of characters from the log buffer.
+ */
+int log_buf_copy(char *dest, int idx, int len)
+{
+ int ret, max;
+ bool took_lock = false;
+
+ if (!oops_in_progress) {
+ spin_lock_irq(&logbuf_lock);
+ took_lock = true;
+ }
+
+ max = log_buf_get_len();
+ if (idx < 0 || idx >= max) {
+ ret = -1;
+ } else {
+ if (len > max)
+ len = max;
+ ret = len;
+ idx += (log_end - max);
+ while (len-- > 0)
+ dest[len] = LOG_BUF(idx + len);
+ }
+
+ if (took_lock)
+ spin_unlock_irq(&logbuf_lock);
+
+ return ret;
+}
+
+/*
+ * Commands to do_syslog:
+ *
+ * 0 -- Close the log. Currently a NOP.
+ * 1 -- Open the log. Currently a NOP.
+ * 2 -- Read from the log.
+ * 3 -- Read all messages remaining in the ring buffer.
+ * 4 -- Read and clear all messages remaining in the ring buffer
+ * 5 -- Clear ring buffer.
+ * 6 -- Disable printk's to console
+ * 7 -- Enable printk's to console
+ * 8 -- Set level of messages printed to console
+ * 9 -- Return number of unread characters in the log buffer
+ * 10 -- Return size of the log buffer
+ */
int do_syslog(int type, char __user *buf, int len, bool from_file)
{
unsigned i, j, limit, count;