From: Matt Mackall <mpm@selenic.com>
To: Keiichi KII <k-keiichi@bx.jp.nec.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [RFC][PATCH 2.6.19 4/6] switch function of netpoll
Date: Tue, 12 Dec 2006 13:15:18 -0600 [thread overview]
Message-ID: <20061212191518.GL13687@waste.org> (raw)
In-Reply-To: <457E4DD0.4050204@bx.jp.nec.com>
On Tue, Dec 12, 2006 at 03:36:00PM +0900, Keiichi KII wrote:
> From: Keiichi KII <k-keiichi@bx.jp.nec.com>
>
> This patch contains switch function of netpoll.
>
> if "enable" attribute of certain port is '1', this port is used.
> if "enable" attribute of certain port is '0', this port isn't used.
>
> active_netconsole_dev list manages a list of active ports.
> inactive_netconsole_dev list manages a list of inactive ports.
>
> If you write '0' to "enable" attribute of a port included in
> active_netconsole_dev_list, This port moves from active_netconsole_dev to
> inactive_netconsole_dev and won't used to send kernel message.
>
> -+- /sys/class/misc/
> |-+- netconsole/
> |-+- port1/
> | |--- id [r--r--r--] id
> | |--- enable [rw-r--r--] 0: disable, 1: enable, writable
> | ...
> |--- port2/
> ...
>
> Signed-off-by: Keiichi KII <k-keiichi@bx.jp.nec.com>
> ---
> --- linux-2.6.19/drivers/net/netconsole.c 2006-12-06 14:37:26.858826500 +0900
> +++ enhanced-netconsole/drivers/net/netconsole.c.switch 2006-12-06
> 13:32:56.744959500 +0900
> @@ -86,9 +86,25 @@ static void netcon_dev_cleanup(struct ne
> static int netcon_miscdev_configured = 0;
>
> static LIST_HEAD(active_netconsole_dev);
> +static LIST_HEAD(inactive_netconsole_dev);
>
> static DEFINE_SPINLOCK(netconsole_dev_list_lock);
>
> +static ssize_t show_enable(struct netconsole_device *nd, char *buf) {
> + struct netconsole_device *dev;
> +
> + spin_lock(&netconsole_dev_list_lock);
> + list_for_each_entry(dev, &active_netconsole_dev, list) {
> + if (dev->id == nd->id) {
> + spin_unlock(&netconsole_dev_list_lock);
> + return sprintf(buf, "1\n");
> + }
> + }
> + spin_unlock(&netconsole_dev_list_lock);
> +
> + return sprintf(buf, "0\n");
> +}
If we intend to have no more than a couple dozen of these, having a
separate list makes things too complicated. Simply add an enabled
field in the struct and skip disabled targets on netconsole writes.
This function becomes 3 lines.
> +static ssize_t store_enable(struct netconsole_device *nd, const char *buf,
> + size_t count)
> +{
> + struct netconsole_device *dev, *tmp;
> + struct list_head *src, *dst;
> +
> + if (strncmp(buf, "1", 1) == 0) {
> + src = &inactive_netconsole_dev;
> + dst = &active_netconsole_dev;
> + } else if(strncmp(buf, "0", 1) == 0) {
> + src = &active_netconsole_dev;
> + dst = &inactive_netconsole_dev;
> + } else {
> + printk(KERN_INFO "netconsole: invalid argument: %s\n", buf);
> + return -EINVAL;
> + }
> +
> + spin_lock(&netconsole_dev_list_lock);
> + list_for_each_entry_safe(dev, tmp, src, list) {
> + if (dev->id == nd->id) {
> + list_del(&nd->list);
> + list_add(&nd->list, dst);
> + break;
> + }
> + }
> + spin_unlock(&netconsole_dev_list_lock);
> +
> + return count;
> +}
As does this one.
--
Mathematics is the supreme nostalgia of our time.
next prev parent reply other threads:[~2006-12-12 19:25 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-12 6:17 [RFC][PATCH 2.6.19 0/6] proposal for dynamic configurable netconsole Keiichi KII
2006-12-12 6:28 ` [RFC][PATCH 2.6.19 1/6] cleanup for netconsole Keiichi KII
2006-12-12 18:10 ` Matt Mackall
2006-12-12 6:34 ` [RFC][PATCH 2.6.19 3/6] add interface for netconsole using sysfs Keiichi KII
2006-12-12 19:09 ` Matt Mackall
2006-12-12 6:36 ` [RFC][PATCH 2.6.19 4/6] switch function of netpoll Keiichi KII
2006-12-12 19:15 ` Matt Mackall [this message]
2006-12-12 6:37 ` [RFC][PATCH 2.6.19 5/6] add "add" element in /sys/class/misc/netconsole Keiichi KII
2006-12-12 19:27 ` Matt Mackall
2006-12-12 6:38 ` [RFC][PATCH 2.6.19 6/6] update modification history Keiichi KII
2006-12-13 23:50 ` Stephen Hemminger
2006-12-12 18:13 ` [RFC][PATCH 2.6.19 0/6] proposal for dynamic configurable netconsole Matt Mackall
2006-12-13 9:44 ` Keiichi KII
[not found] ` <457E4C65.6030802@bx.jp.nec.com>
2006-12-12 18:42 ` [RFC][PATCH 2.6.19 2/6] support multiple logging agents Matt Mackall
2006-12-13 21:16 ` Andy Isaacson
2006-12-20 9:35 ` Keiichi KII
2006-12-20 16:40 ` Matt Mackall
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=20061212191518.GL13687@waste.org \
--to=mpm@selenic.com \
--cc=k-keiichi@bx.jp.nec.com \
--cc=linux-kernel@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