[RFC][PATCH -mm take2 5/5] add "add" element in /sys/class/misc/netconsole

From: Keiichi KII
Date: Tue Dec 26 2006 - 00:36:31 EST


From: Keiichi KII <k-keiichi@xxxxxxxxxxxxx>

This patch contains switch function of netpoll.

If "enabled" attribute of certain port is '1', this port is used
and the configurations of this port are uable to change.

If "enabled" attribute of certain port is '0', this port isn't used
and the configurations of this port are able to change.

-+- /sys/class/misc/
|-+- netconsole/
|-+- port1/
| |--- id [r--r--r--] id
| |--- enabled [rw-r--r--] 0: disable 1: enable, writable
| ...
|--- port2/
...

Signed-off-by: Keiichi KII <k-keiichi@xxxxxxxxxxxxx>
Signed-off-by: Takayoshi Kochi <t-kochi@xxxxxxxxxxxxx>
---
--- linux-mm/drivers/net/netconsole.c 2006-12-26 14:19:01.481857000 +0900
+++ enhanced-netconsole/drivers/net/netconsole.c.add 2006-12-25 16:45:05.121887750 +0900
@@ -335,6 +335,30 @@ static struct miscdevice netconsole_misc
.name = "netconsole",
};

+static ssize_t store_miscdev_add(struct class_device *cdev,
+ const char *buf, size_t count)
+{
+ char *target_param;
+
+ target_param = kmalloc(count+1, GFP_KERNEL);
+ if (!target_param) {
+ printk(KERN_ERR "netconsole: kmalloc() failed!\n");
+ return -ENOMEM;
+ }
+
+ strcpy(target_param, buf);
+ if (target_param[count - 1] == '\n')
+ target_param[count - 1] = '\0';
+
+ printk(KERN_INFO "netconsole: config = [%s]\n", target_param);
+ add_target(target_param);
+ kfree(target_param);
+
+ return count;
+}
+
+static CLASS_DEVICE_ATTR(add, S_IWUSR, NULL, store_miscdev_add);
+
static struct netpoll np = {
.name = "netconsole",
.dev_name = "eth0",
@@ -464,6 +488,9 @@ static int __init init_netconsole(void)

register_console(&netconsole);

+ class_device_create_file(netconsole_miscdev.class,
+ &class_device_attr_add);
+
if(!strlen(config)) {
printk(KERN_ERR "netconsole: not configured\n");
return 0;


--
Keiichi KII
NEC Corporation OSS Promotion Center
E-mail: k-keiichi@xxxxxxxxxxxxx
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/