lkml.org 
[lkml]   [2004]   [Nov]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [patch] inotify: add sysfs store support
    From
    Date
    Awesome work! But I am going to hold off applying this, until the
    mainline kernel gets the misc device changes.

    John

    On Wed, 2004-11-17 at 15:10 -0500, Robert Love wrote:
    > Attached patch implements the final chunk of our sysfs solution: store
    > support. I added basic write support with some simple checking (do not
    > allow zero) to the existing sysfs attributes.
    >
    > I made a few other changes. I added a newline after the values in the
    > show function. The other sysfs attributes do this and it makes
    > sense--do a "cat *" in our sysfs directory before and after. I also
    > just return sprintf() directly instead of the strlen(). I also made
    > max_queued_events unsigned, since dev->max_events is unsigned. If we
    > don't do this we need to add checking in store_max_queued_events to
    > ensure that the given value is less than or equal to INT_MAX so this
    > seems easier and more optimal anyhow. The other values I kept at int
    > since that is the range of atomic_t's.
    >
    > I am running it now. I can read and write the values fine. Works
    > great.
    >
    > Robert Love
    >
    >
    > Add store support to our sysfs attributes and a few other changes.
    >
    > inotify.c | 35 +++++++++++++++++++++++++----------
    > 1 files changed, 25 insertions(+), 10 deletions(-)
    >
    > diff -u linux/drivers/char/inotify.c linux/drivers/char/inotify.c
    > --- linux/drivers/char/inotify.c 2004-11-16 14:42:11.929575168 -0500
    > +++ linux/drivers/char/inotify.c 2004-11-17 12:28:27.921136656 -0500
    > @@ -40,7 +40,7 @@
    >
    > static int sysfs_attrib_max_user_devices;
    > static int sysfs_attrib_max_user_watches;
    > -static int sysfs_attrib_max_queued_events;
    > +static unsigned int sysfs_attrib_max_queued_events;
    >
    > /*
    > * struct inotify_device - represents an open instance of an inotify device
    > @@ -82,38 +82,53 @@
    >
    > static ssize_t show_max_queued_events(struct class_device *class, char *buf)
    > {
    > - sprintf(buf, "%d", sysfs_attrib_max_queued_events);
    > - return strlen(buf) + 1;
    > + return sprintf(buf, "%d\n", sysfs_attrib_max_queued_events);
    > }
    >
    > static ssize_t store_max_queued_events(struct class_device *class,
    > const char *buf, size_t count)
    > {
    > - return 0;
    > + unsigned int max;
    > +
    > + if (sscanf(buf, "%u", &max) > 0 && max > 0) {
    > + sysfs_attrib_max_queued_events = max;
    > + return strlen(buf);
    > + }
    > + return -EINVAL;
    > }
    >
    > static ssize_t show_max_user_devices(struct class_device *class, char *buf)
    > {
    > - sprintf(buf, "%d", sysfs_attrib_max_user_devices);
    > - return strlen(buf) + 1;
    > + return sprintf(buf, "%d\n", sysfs_attrib_max_user_devices);
    > }
    >
    > static ssize_t store_max_user_devices(struct class_device *class,
    > const char *buf, size_t count)
    > {
    > - return 0;
    > + int max;
    > +
    > + if (sscanf(buf, "%d", &max) > 0 && max > 0) {
    > + sysfs_attrib_max_user_devices = max;
    > + return strlen(buf);
    > + }
    > + return -EINVAL;
    > }
    >
    > static ssize_t show_max_user_watches(struct class_device *class, char *buf)
    > {
    > - sprintf(buf, "%d", sysfs_attrib_max_user_watches);
    > - return strlen(buf) + 1;
    > + return sprintf(buf, "%d\n", sysfs_attrib_max_user_watches);
    > }
    >
    > static ssize_t store_max_user_watches(struct class_device *class,
    > const char *buf, size_t count)
    > {
    > - return 0;
    > + int max;
    > +
    > + if (sscanf(buf, "%d", &max) > 0 && max > 0) {
    > + sysfs_attrib_max_user_watches = max;
    > + return strlen(buf);
    > + }
    > + return -EINVAL;
    > }
    >
    > static CLASS_DEVICE_ATTR(max_queued_events, S_IRUGO | S_IWUSR,
    >
    >
    --
    John McCutchan <ttb@tentacle.dhs.org>
    -
    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-03-22 14:08    [W:0.054 / U:31.744 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site