[RFC/PATCH 14/22] W1: rename timeout to scan_interval
From: Dmitry Torokhov
Date: Thu Apr 21 2005 - 03:25:45 EST
W1: more master attributes changes:
- rename timeout parameter/attribute to scan_interval to better
reflect its purpose;
- make scan_timeout be a per-device attribute and allow changing
it from userspace via sysfs;
- allow changing max_slave_count it from userspace as well.
Signed-off-by: Dmitry Torokhov <dtor@xxxxxxx>
---
w1.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++++-----------
w1.h | 1 +
2 files changed, 50 insertions(+), 11 deletions(-)
Index: dtor/drivers/w1/w1.c
===================================================================
--- dtor.orig/drivers/w1/w1.c
+++ dtor/drivers/w1/w1.c
@@ -42,11 +42,11 @@ MODULE_LICENSE("GPL");
MODULE_AUTHOR("Evgeniy Polyakov <johnpol@xxxxxxxxxxx>");
MODULE_DESCRIPTION("Driver for 1-wire Dallas network protocol.");
-static int w1_timeout = 10;
+static int w1_scan_interval = 10;
static int w1_max_slave_count = 10;
static int w1_max_slave_ttl = 10;
-module_param_named(timeout, w1_timeout, int, 0);
+module_param_named(scan_interval, w1_scan_interval, int, 0);
module_param_named(max_slave_count, w1_max_slave_count, int, 0);
module_param_named(slave_ttl, w1_max_slave_ttl, int, 0);
@@ -357,7 +357,7 @@ static int w1_process(void *data)
while (!dev->need_exit) {
try_to_freeze(PF_FREEZE);
- msleep_interruptible(w1_timeout * 1000);
+ msleep_interruptible(dev->scan_interval * 1000);
if (signal_pending(current))
flush_signals(current);
@@ -401,33 +401,71 @@ static ssize_t w1_master_attribute_show_
return sprintf(buf, "%s\n", master->name);
}
-static ssize_t w1_master_attribute_show_timeout(struct device *dev, char *buf)
+static ssize_t
+w1_master_attribute_show_scan_interval(struct device *dev, char *buf)
{
- ssize_t count;
- count = sprintf(buf, "%d\n", w1_timeout);
- return count;
+ struct w1_master *master = to_w1_master(dev);
+
+ return sprintf(buf, "%d\n", master->scan_interval);
+}
+
+static ssize_t
+w1_master_attribute_set_scan_interval(struct device *dev, const char *buf,
+ size_t n)
+{
+ struct w1_master *master = to_w1_master(dev);
+ int interval;
+
+ interval = simple_strtoul(buf, NULL, 10);
+ if (!interval)
+ return -EINVAL;
+
+ master->scan_interval = interval;
+ return 0;
}
-static ssize_t w1_master_attribute_show_max_slave_count(struct device *dev, char *buf)
+static ssize_t
+w1_master_attribute_show_max_slave_count(struct device *dev, char *buf)
{
struct w1_master *master = to_w1_master(dev);
return sprintf(buf, "%d\n", master->max_slave_count);
}
+static ssize_t
+w1_master_attribute_set_max_slave_count(struct device *dev, const char *buf,
+ size_t n)
+{
+ struct w1_master *master = to_w1_master(dev);
+ int max_count;
+
+ max_count = simple_strtoul(buf, NULL, 10);
+ if (!max_count)
+ return -EINVAL;
+
+ master->max_slave_count = max_count;
+ return 0;
+}
+
#define W1_MASTER_ATTR_RO(_name, _mode) \
struct device_attribute w1_master_attribute_##_name = \
__ATTR(_name, _mode, \
w1_master_attribute_show_##_name, NULL)
+#define W1_MASTER_ATTR_RW(_name, _mode) \
+ struct device_attribute w1_master_attribute_##_name = \
+ __ATTR(_name, _mode, \
+ w1_master_attribute_show_##_name, \
+ w1_master_attribute_set_##_name)
+
static W1_MASTER_ATTR_RO(name, S_IRUGO);
-static W1_MASTER_ATTR_RO(max_slave_count, S_IRUGO);
-static W1_MASTER_ATTR_RO(timeout, S_IRUGO);
+static W1_MASTER_ATTR_RW(max_slave_count, S_IWUSR | S_IRUGO);
+static W1_MASTER_ATTR_RW(scan_interval, S_IWUSR | S_IRUGO);
static struct attribute *w1_master_default_attrs[] = {
&w1_master_attribute_name.attr,
&w1_master_attribute_max_slave_count.attr,
- &w1_master_attribute_timeout.attr,
+ &w1_master_attribute_scan_interval.attr,
NULL
};
Index: dtor/drivers/w1/w1.h
===================================================================
--- dtor.orig/drivers/w1/w1.h
+++ dtor/drivers/w1/w1.h
@@ -107,6 +107,7 @@ struct w1_master
struct list_head slist;
int max_slave_count;
int slave_ttl;
+ int scan_interval;
int initialized;
u32 id;
-
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/