From: David Herrmann <dh.herrmann@googlemail.com>
To: linux-serial@vger.kernel.org
Cc: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>,
linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
David Herrmann <dh.herrmann@googlemail.com>
Subject: [PATCH 06/10] fblog: allow enabling/disabling fblog on runtime
Date: Sat, 16 Jun 2012 22:04:22 +0000 [thread overview]
Message-ID: <1339884266-9201-7-git-send-email-dh.herrmann@googlemail.com> (raw)
In-Reply-To: <1339884266-9201-1-git-send-email-dh.herrmann@googlemail.com>
A sysfs file called "active" can be used to enable and disable fblog on
runtime. For example, the init-process can run "echo '0' >.../active"
after booting the system. This will allow other applications like X11 to
use the graphics subsystem. During shutdown, we can write '1' to get
system messages again.
When disabling fblog, we remove all framebuffers and will prevent new
hotplugged framebuffers from being added. When enabling fblog again, we
rescan the system for all framebuffers and resume operating.
The sysfs file is not registered, yet, as we do not have a "struct device"
yet. This will follow shortly, though.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
---
Documentation/ABI/testing/sysfs-fblog | 9 ++++++
drivers/video/console/fblog.c | 49 +++++++++++++++++++++++++++++++++
2 files changed, 58 insertions(+)
create mode 100644 Documentation/ABI/testing/sysfs-fblog
diff --git a/Documentation/ABI/testing/sysfs-fblog b/Documentation/ABI/testing/sysfs-fblog
new file mode 100644
index 0000000..596393c
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-fblog
@@ -0,0 +1,9 @@
+What: /sys/class/graphics/fblog/active
+Date: June 2012
+KernelVersion: 3.6
+Contact: David Herrmann <dh.herrmann@googlemail.com>
+Description: Enable/Disable fblog. When setting this to 0, fblog will stop
+ writing to framebuffers and other applications can use the
+ graphics subsystem. When setting this to 1, fblog will rescan
+ the system for all framebuffers and resume drawing the kernel
+ log onto all framebuffers.
diff --git a/drivers/video/console/fblog.c b/drivers/video/console/fblog.c
index 7d4032e..9b05c56 100644
--- a/drivers/video/console/fblog.c
+++ b/drivers/video/console/fblog.c
@@ -92,6 +92,7 @@ struct fblog_fb {
};
static struct fblog_fb *fblog_fbs[FB_MAX];
+static atomic_t fblog_active;
static void fblog_buf_resize(struct fblog_buf *buf, size_t width,
size_t height)
@@ -338,6 +339,8 @@ static void fblog_register(struct fb_info *info)
const struct fb_videomode *mode;
unsigned int width, height;
+ if (!atomic_read(&fblog_active))
+ return;
if (!info || info->node < 0 || info->node >= FB_MAX)
return;
if (!registered_fb[info->node] || fblog_fbs[info->node])
@@ -428,6 +431,52 @@ static void fblog_refresh(struct fblog_fb *fb)
fblog_redraw(fb);
}
+static void fblog_activate(void)
+{
+ if (atomic_read(&fblog_active))
+ return;
+
+ atomic_set(&fblog_active, 1);
+ fblog_register_all();
+}
+
+static void fblog_deactivate(void)
+{
+ if (!atomic_read(&fblog_active))
+ return;
+
+ atomic_set(&fblog_active, 0);
+ fblog_unregister_all();
+}
+
+static ssize_t fblog_dev_active_show(struct device *dev,
+ struct device_attribute *attr,
+ char *buf)
+{
+ return snprintf(buf, PAGE_SIZE, "%d\n", atomic_read(&fblog_active));
+}
+
+static ssize_t fblog_dev_active_store(struct device *dev,
+ struct device_attribute *attr,
+ const char *buf,
+ size_t count)
+{
+ unsigned long num;
+
+ num = simple_strtoul(buf, NULL, 10);
+ console_lock();
+ if (num)
+ fblog_activate();
+ else
+ fblog_deactivate();
+ console_unlock();
+
+ return count;
+}
+
+static DEVICE_ATTR(active, S_IRUGO | S_IWUSR | S_IWGRP, fblog_dev_active_show,
+ fblog_dev_active_store);
+
static int __init fblog_init(void)
{
return 0;
--
1.7.10.4
next prev parent reply other threads:[~2012-06-16 22:04 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-16 22:04 [RFC 00/10] fblog: framebuffer kernel log driver David Herrmann
2012-06-16 22:04 ` [PATCH 01/10] fblog: new framebuffer kernel log dummy driver David Herrmann
2012-06-16 22:04 ` [PATCH 02/10] fblog: implement buffer management David Herrmann
2012-06-16 22:04 ` [PATCH 03/10] fblog: register framebuffer objects David Herrmann
2012-06-16 22:04 ` [PATCH 04/10] fblog: implement fblog_redraw() David Herrmann
2012-06-16 22:35 ` Alan Cox
2012-06-18 18:36 ` David Herrmann
2012-06-16 22:04 ` [PATCH 05/10] fblog: add framebuffer helpers David Herrmann
2012-06-16 22:33 ` Bruno Prémont
2012-06-18 18:50 ` David Herrmann
2012-06-16 22:04 ` David Herrmann [this message]
2012-06-16 22:04 ` [PATCH 07/10] fblog: forward kernel log messages to all framebuffers David Herrmann
2012-06-16 22:04 ` [PATCH 08/10] fblog: react on framebuffer events David Herrmann
2012-06-16 22:04 ` [PATCH 09/10] fblog: register all handlers on module-init David Herrmann
2012-06-16 22:04 ` [PATCH 10/10] fblog: add "activate" module parameter David Herrmann
2012-06-18 19:06 ` [RFC 00/10] fblog: framebuffer kernel log driver David Herrmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1339884266-9201-7-git-send-email-dh.herrmann@googlemail.com \
--to=dh.herrmann@googlemail.com \
--cc=FlorianSchandinat@gmx.de \
--cc=gregkh@linuxfoundation.org \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).