lkml.org 
[lkml]   [2005]   [Apr]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC/PATCH 14/22] W1: rename timeout to scan_interval
    Date
    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@mail.ru>
    ---

    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@2ka.mipt.ru>");
    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@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-04-21 10:29    [W:2.856 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site