* [PATCH V4 0/2] watchdog: Sysfs status read support
@ 2015-09-07 4:24 Pratyush Anand
2015-09-07 4:24 ` [PATCH V4 1/2] watchdog: Use static struct class watchdog_class in stead of pointer Pratyush Anand
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Pratyush Anand @ 2015-09-07 4:24 UTC (permalink / raw)
To: linux; +Cc: dyoung, dzickus, linux-watchdog, Pratyush Anand
These patches provide support to read different watchdog device status
through sysfs interface.
Changes since V3:
* Added Reviewed by tag
* Corrected a checkpatch warning
Changes since V2:
* Used static struct class watchdog_class in stead of pointer. It helped in
keep using device_create().
* Above logic was moved to a separate patch.
* Changed subject line of other patch to look more relevant
Changes since V1(RFC):
* Removed keepalive and start ABI
* timeout is read only now
* state returns text
* only supported ABI visible
* ABI contact changed to MAINTAINER
* unnecessary mutex removed
* aligned continuation with '('
* unnecessary initialization of status (= 0) corrected
* unnecessary else removed
* used __ATTRIBUTE_GROUPS
* removed watchdog_device_create and added functionality in
* watchdog_dev_register.
* optimized nowayout_show
* Now no -EOPNOTSUPP return for timeout read in case of wdd->timeout = 0.
Pratyush Anand (2):
watchdog: Use static struct class watchdog_class in stead of pointer
watchdog: Read device status through sysfs attributes
Documentation/ABI/testing/sysfs-class-watchdog | 51 ++++++++++
drivers/watchdog/watchdog_core.c | 17 +---
drivers/watchdog/watchdog_core.h | 2 +-
drivers/watchdog/watchdog_dev.c | 136 ++++++++++++++++++++++++-
4 files changed, 187 insertions(+), 19 deletions(-)
create mode 100644 Documentation/ABI/testing/sysfs-class-watchdog
--
2.5.0
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH V4 1/2] watchdog: Use static struct class watchdog_class in stead of pointer 2015-09-07 4:24 [PATCH V4 0/2] watchdog: Sysfs status read support Pratyush Anand @ 2015-09-07 4:24 ` Pratyush Anand [not found] ` <cover.1441599217.git.panand-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2015-10-06 6:43 ` [PATCH V4 0/2] watchdog: Sysfs status read support Pratyush Anand 2 siblings, 0 replies; 7+ messages in thread From: Pratyush Anand @ 2015-09-07 4:24 UTC (permalink / raw) To: linux Cc: dyoung, dzickus, linux-watchdog, Pratyush Anand, open list, Wim Van Sebroeck We need few sysfs attributes to know different status of a watchdog device. To do that, we need to associate .dev_groups with watchdog_class. So convert it from pointer to static. Putting this static struct in watchdog_dev.c, so that static device attributes defined in that file can be attached to it. Signed-off-by: Pratyush Anand <panand@redhat.com> Suggested-by: Guenter Roeck <linux@roeck-us.net> Reviewed-by: Guenter Roeck <linux@roeck-us.net> --- drivers/watchdog/watchdog_core.c | 15 ++------------- drivers/watchdog/watchdog_core.h | 2 +- drivers/watchdog/watchdog_dev.c | 26 ++++++++++++++++++++++---- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/drivers/watchdog/watchdog_core.c b/drivers/watchdog/watchdog_core.c index 1a8059455413..47d38c5c3f9a 100644 --- a/drivers/watchdog/watchdog_core.c +++ b/drivers/watchdog/watchdog_core.c @@ -274,19 +274,9 @@ static int __init watchdog_deferred_registration(void) static int __init watchdog_init(void) { - int err; - - watchdog_class = class_create(THIS_MODULE, "watchdog"); - if (IS_ERR(watchdog_class)) { - pr_err("couldn't create class\n"); + watchdog_class = watchdog_dev_init(); + if (IS_ERR(watchdog_class)) return PTR_ERR(watchdog_class); - } - - err = watchdog_dev_init(); - if (err < 0) { - class_destroy(watchdog_class); - return err; - } watchdog_deferred_registration(); return 0; @@ -295,7 +285,6 @@ static int __init watchdog_init(void) static void __exit watchdog_exit(void) { watchdog_dev_exit(); - class_destroy(watchdog_class); ida_destroy(&watchdog_ida); } diff --git a/drivers/watchdog/watchdog_core.h b/drivers/watchdog/watchdog_core.h index 6c951418fca7..1c8d6b0e68c7 100644 --- a/drivers/watchdog/watchdog_core.h +++ b/drivers/watchdog/watchdog_core.h @@ -33,5 +33,5 @@ */ extern int watchdog_dev_register(struct watchdog_device *); extern int watchdog_dev_unregister(struct watchdog_device *); -extern int __init watchdog_dev_init(void); +extern struct class * __init watchdog_dev_init(void); extern void __exit watchdog_dev_exit(void); diff --git a/drivers/watchdog/watchdog_dev.c b/drivers/watchdog/watchdog_dev.c index 6aaefbad303e..986282d44b90 100644 --- a/drivers/watchdog/watchdog_dev.c +++ b/drivers/watchdog/watchdog_dev.c @@ -578,18 +578,35 @@ int watchdog_dev_unregister(struct watchdog_device *watchdog) return 0; } +static struct class watchdog_class = { + .name = "watchdog", + .owner = THIS_MODULE, +}; + /* * watchdog_dev_init: init dev part of watchdog core * * Allocate a range of chardev nodes to use for watchdog devices */ -int __init watchdog_dev_init(void) +struct class * __init watchdog_dev_init(void) { - int err = alloc_chrdev_region(&watchdog_devt, 0, MAX_DOGS, "watchdog"); - if (err < 0) + int err; + + err = class_register(&watchdog_class); + if (err < 0) { + pr_err("couldn't register class\n"); + return ERR_PTR(err); + } + + err = alloc_chrdev_region(&watchdog_devt, 0, MAX_DOGS, "watchdog"); + if (err < 0) { pr_err("watchdog: unable to allocate char dev region\n"); - return err; + class_unregister(&watchdog_class); + return ERR_PTR(err); + } + + return &watchdog_class; } /* @@ -601,4 +618,5 @@ int __init watchdog_dev_init(void) void __exit watchdog_dev_exit(void) { unregister_chrdev_region(watchdog_devt, MAX_DOGS); + class_unregister(&watchdog_class); } -- 2.5.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
[parent not found: <cover.1441599217.git.panand-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>]
* [PATCH V4 2/2] watchdog: Read device status through sysfs attributes 2015-09-07 4:24 [PATCH V4 0/2] watchdog: Sysfs status read support Pratyush Anand @ 2015-09-07 4:24 ` Pratyush Anand [not found] ` <cover.1441599217.git.panand-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2015-10-06 6:43 ` [PATCH V4 0/2] watchdog: Sysfs status read support Pratyush Anand 2 siblings, 0 replies; 7+ messages in thread From: Pratyush Anand @ 2015-09-07 4:24 UTC (permalink / raw) To: linux-0h96xk9xTtrk1uMJSBkQmQ Cc: dyoung-H+wXaHxf7aLQT0dZR+AlfA, dzickus-H+wXaHxf7aLQT0dZR+AlfA, linux-watchdog-u79uwXL29TY76Z2rM5mHXA, Pratyush Anand, open list:ABI/API, open list, Wim Van Sebroeck This patch adds following attributes to watchdog device's sysfs interface to read its different status. * state - reads whether device is active or not * identity - reads Watchdog device's identity string. * timeout - reads current timeout. * timeleft - reads timeleft before watchdog generates a reset * bootstatus - reads status of the watchdog device at boot * status - reads watchdog device's internal status bits * nowayout - reads whether nowayout feature was set or not Testing with iTCO_wdt: # cd /sys/class/watchdog/watchdog1/ # ls bootstatus dev device identity nowayout power state subsystem timeleft timeout uevent # cat identity iTCO_wdt # cat timeout 30 # cat state inactive # echo > /dev/watchdog1 # cat timeleft 26 # cat state active # cat bootstatus 0 # cat nowayout 0 Signed-off-by: Pratyush Anand <panand-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> Reviewed-by: Guenter Roeck <linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org> --- Documentation/ABI/testing/sysfs-class-watchdog | 51 ++++++++++++ drivers/watchdog/watchdog_core.c | 2 +- drivers/watchdog/watchdog_dev.c | 110 +++++++++++++++++++++++++ 3 files changed, 162 insertions(+), 1 deletion(-) create mode 100644 Documentation/ABI/testing/sysfs-class-watchdog diff --git a/Documentation/ABI/testing/sysfs-class-watchdog b/Documentation/ABI/testing/sysfs-class-watchdog new file mode 100644 index 000000000000..736046b33040 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-watchdog @@ -0,0 +1,51 @@ +What: /sys/class/watchdog/watchdogn/bootstatus +Date: August 2015 +Contact: Wim Van Sebroeck <wim-IQzOog9fTRqzQB+pC5nmwQ@public.gmane.org> +Description: + It is a read only file. It contains status of the watchdog + device at boot. It is equivalent to WDIOC_GETBOOTSTATUS of + ioctl interface. + +What: /sys/class/watchdog/watchdogn/identity +Date: August 2015 +Contact: Wim Van Sebroeck <wim-IQzOog9fTRqzQB+pC5nmwQ@public.gmane.org> +Description: + It is a read only file. It contains identity string of + watchdog device. + +What: /sys/class/watchdog/watchdogn/nowayout +Date: August 2015 +Contact: Wim Van Sebroeck <wim-IQzOog9fTRqzQB+pC5nmwQ@public.gmane.org> +Description: + It is a read only file. While reading, it gives '1' if that + device supports nowayout feature else, it gives '0'. + +What: /sys/class/watchdog/watchdogn/state +Date: August 2015 +Contact: Wim Van Sebroeck <wim-IQzOog9fTRqzQB+pC5nmwQ@public.gmane.org> +Description: + It is a read only file. It gives active/inactive status of + watchdog device. + +What: /sys/class/watchdog/watchdogn/status +Date: August 2015 +Contact: Wim Van Sebroeck <wim-IQzOog9fTRqzQB+pC5nmwQ@public.gmane.org> +Description: + It is a read only file. It contains watchdog device's + internal status bits. It is equivalent to WDIOC_GETSTATUS + of ioctl interface. + +What: /sys/class/watchdog/watchdogn/timeleft +Date: August 2015 +Contact: Wim Van Sebroeck <wim-IQzOog9fTRqzQB+pC5nmwQ@public.gmane.org> +Description: + It is a read only file. It contains value of time left for + reset generation. It is equivalent to WDIOC_GETTIMELEFT of + ioctl interface. + +What: /sys/class/watchdog/watchdogn/timeout +Date: August 2015 +Contact: Wim Van Sebroeck <wim-IQzOog9fTRqzQB+pC5nmwQ@public.gmane.org> +Description: + It is a read only file. It is read to know about current + value of timeout programmed. diff --git a/drivers/watchdog/watchdog_core.c b/drivers/watchdog/watchdog_core.c index 47d38c5c3f9a..62666f021762 100644 --- a/drivers/watchdog/watchdog_core.c +++ b/drivers/watchdog/watchdog_core.c @@ -183,7 +183,7 @@ static int __watchdog_register_device(struct watchdog_device *wdd) devno = wdd->cdev.dev; wdd->dev = device_create(watchdog_class, wdd->parent, devno, - NULL, "watchdog%d", wdd->id); + wdd, "watchdog%d", wdd->id); if (IS_ERR(wdd->dev)) { watchdog_dev_unregister(wdd); ida_simple_remove(&watchdog_ida, id); diff --git a/drivers/watchdog/watchdog_dev.c b/drivers/watchdog/watchdog_dev.c index 986282d44b90..2b8d7f1c9599 100644 --- a/drivers/watchdog/watchdog_dev.c +++ b/drivers/watchdog/watchdog_dev.c @@ -248,6 +248,115 @@ out_timeleft: return err; } +static ssize_t nowayout_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct watchdog_device *wdd = dev_get_drvdata(dev); + + return sprintf(buf, "%d\n", !!test_bit(WDOG_NO_WAY_OUT, &wdd->status)); +} +static DEVICE_ATTR_RO(nowayout); + +static ssize_t status_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct watchdog_device *wdd = dev_get_drvdata(dev); + ssize_t status; + unsigned int val; + + status = watchdog_get_status(wdd, &val); + if (!status) + status = sprintf(buf, "%u\n", val); + + return status; +} +static DEVICE_ATTR_RO(status); + +static ssize_t bootstatus_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct watchdog_device *wdd = dev_get_drvdata(dev); + + return sprintf(buf, "%u\n", wdd->bootstatus); +} +static DEVICE_ATTR_RO(bootstatus); + +static ssize_t timeleft_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct watchdog_device *wdd = dev_get_drvdata(dev); + ssize_t status; + unsigned int val; + + status = watchdog_get_timeleft(wdd, &val); + if (!status) + status = sprintf(buf, "%u\n", val); + + return status; +} +static DEVICE_ATTR_RO(timeleft); + +static ssize_t timeout_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct watchdog_device *wdd = dev_get_drvdata(dev); + + return sprintf(buf, "%u\n", wdd->timeout); +} +static DEVICE_ATTR_RO(timeout); + +static ssize_t identity_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct watchdog_device *wdd = dev_get_drvdata(dev); + + return sprintf(buf, "%s\n", wdd->info->identity); +} +static DEVICE_ATTR_RO(identity); + +static ssize_t state_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct watchdog_device *wdd = dev_get_drvdata(dev); + + if (watchdog_active(wdd)) + return sprintf(buf, "active\n"); + + return sprintf(buf, "inactive\n"); +} +static DEVICE_ATTR_RO(state); + +static umode_t wdt_is_visible(struct kobject *kobj, struct attribute *attr, + int n) +{ + struct device *dev = container_of(kobj, struct device, kobj); + struct watchdog_device *wdd = dev_get_drvdata(dev); + umode_t mode = attr->mode; + + if (attr == &dev_attr_status.attr && !wdd->ops->status) + mode = 0; + else if (attr == &dev_attr_timeleft.attr && !wdd->ops->get_timeleft) + mode = 0; + + return mode; +} +static struct attribute *wdt_attrs[] = { + &dev_attr_state.attr, + &dev_attr_identity.attr, + &dev_attr_timeout.attr, + &dev_attr_timeleft.attr, + &dev_attr_bootstatus.attr, + &dev_attr_status.attr, + &dev_attr_nowayout.attr, + NULL, +}; + +static const struct attribute_group wdt_group = { + .attrs = wdt_attrs, + .is_visible = wdt_is_visible, +}; +__ATTRIBUTE_GROUPS(wdt); + /* * watchdog_ioctl_op: call the watchdog drivers ioctl op if defined * @wddev: the watchdog device to do the ioctl on @@ -581,6 +690,7 @@ int watchdog_dev_unregister(struct watchdog_device *watchdog) static struct class watchdog_class = { .name = "watchdog", .owner = THIS_MODULE, + .dev_groups = wdt_groups, }; /* -- 2.5.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH V4 2/2] watchdog: Read device status through sysfs attributes @ 2015-09-07 4:24 ` Pratyush Anand 0 siblings, 0 replies; 7+ messages in thread From: Pratyush Anand @ 2015-09-07 4:24 UTC (permalink / raw) To: linux Cc: dyoung, dzickus, linux-watchdog, Pratyush Anand, open list:ABI/API, open list, Wim Van Sebroeck This patch adds following attributes to watchdog device's sysfs interface to read its different status. * state - reads whether device is active or not * identity - reads Watchdog device's identity string. * timeout - reads current timeout. * timeleft - reads timeleft before watchdog generates a reset * bootstatus - reads status of the watchdog device at boot * status - reads watchdog device's internal status bits * nowayout - reads whether nowayout feature was set or not Testing with iTCO_wdt: # cd /sys/class/watchdog/watchdog1/ # ls bootstatus dev device identity nowayout power state subsystem timeleft timeout uevent # cat identity iTCO_wdt # cat timeout 30 # cat state inactive # echo > /dev/watchdog1 # cat timeleft 26 # cat state active # cat bootstatus 0 # cat nowayout 0 Signed-off-by: Pratyush Anand <panand@redhat.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> --- Documentation/ABI/testing/sysfs-class-watchdog | 51 ++++++++++++ drivers/watchdog/watchdog_core.c | 2 +- drivers/watchdog/watchdog_dev.c | 110 +++++++++++++++++++++++++ 3 files changed, 162 insertions(+), 1 deletion(-) create mode 100644 Documentation/ABI/testing/sysfs-class-watchdog diff --git a/Documentation/ABI/testing/sysfs-class-watchdog b/Documentation/ABI/testing/sysfs-class-watchdog new file mode 100644 index 000000000000..736046b33040 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-watchdog @@ -0,0 +1,51 @@ +What: /sys/class/watchdog/watchdogn/bootstatus +Date: August 2015 +Contact: Wim Van Sebroeck <wim@iguana.be> +Description: + It is a read only file. It contains status of the watchdog + device at boot. It is equivalent to WDIOC_GETBOOTSTATUS of + ioctl interface. + +What: /sys/class/watchdog/watchdogn/identity +Date: August 2015 +Contact: Wim Van Sebroeck <wim@iguana.be> +Description: + It is a read only file. It contains identity string of + watchdog device. + +What: /sys/class/watchdog/watchdogn/nowayout +Date: August 2015 +Contact: Wim Van Sebroeck <wim@iguana.be> +Description: + It is a read only file. While reading, it gives '1' if that + device supports nowayout feature else, it gives '0'. + +What: /sys/class/watchdog/watchdogn/state +Date: August 2015 +Contact: Wim Van Sebroeck <wim@iguana.be> +Description: + It is a read only file. It gives active/inactive status of + watchdog device. + +What: /sys/class/watchdog/watchdogn/status +Date: August 2015 +Contact: Wim Van Sebroeck <wim@iguana.be> +Description: + It is a read only file. It contains watchdog device's + internal status bits. It is equivalent to WDIOC_GETSTATUS + of ioctl interface. + +What: /sys/class/watchdog/watchdogn/timeleft +Date: August 2015 +Contact: Wim Van Sebroeck <wim@iguana.be> +Description: + It is a read only file. It contains value of time left for + reset generation. It is equivalent to WDIOC_GETTIMELEFT of + ioctl interface. + +What: /sys/class/watchdog/watchdogn/timeout +Date: August 2015 +Contact: Wim Van Sebroeck <wim@iguana.be> +Description: + It is a read only file. It is read to know about current + value of timeout programmed. diff --git a/drivers/watchdog/watchdog_core.c b/drivers/watchdog/watchdog_core.c index 47d38c5c3f9a..62666f021762 100644 --- a/drivers/watchdog/watchdog_core.c +++ b/drivers/watchdog/watchdog_core.c @@ -183,7 +183,7 @@ static int __watchdog_register_device(struct watchdog_device *wdd) devno = wdd->cdev.dev; wdd->dev = device_create(watchdog_class, wdd->parent, devno, - NULL, "watchdog%d", wdd->id); + wdd, "watchdog%d", wdd->id); if (IS_ERR(wdd->dev)) { watchdog_dev_unregister(wdd); ida_simple_remove(&watchdog_ida, id); diff --git a/drivers/watchdog/watchdog_dev.c b/drivers/watchdog/watchdog_dev.c index 986282d44b90..2b8d7f1c9599 100644 --- a/drivers/watchdog/watchdog_dev.c +++ b/drivers/watchdog/watchdog_dev.c @@ -248,6 +248,115 @@ out_timeleft: return err; } +static ssize_t nowayout_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct watchdog_device *wdd = dev_get_drvdata(dev); + + return sprintf(buf, "%d\n", !!test_bit(WDOG_NO_WAY_OUT, &wdd->status)); +} +static DEVICE_ATTR_RO(nowayout); + +static ssize_t status_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct watchdog_device *wdd = dev_get_drvdata(dev); + ssize_t status; + unsigned int val; + + status = watchdog_get_status(wdd, &val); + if (!status) + status = sprintf(buf, "%u\n", val); + + return status; +} +static DEVICE_ATTR_RO(status); + +static ssize_t bootstatus_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct watchdog_device *wdd = dev_get_drvdata(dev); + + return sprintf(buf, "%u\n", wdd->bootstatus); +} +static DEVICE_ATTR_RO(bootstatus); + +static ssize_t timeleft_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct watchdog_device *wdd = dev_get_drvdata(dev); + ssize_t status; + unsigned int val; + + status = watchdog_get_timeleft(wdd, &val); + if (!status) + status = sprintf(buf, "%u\n", val); + + return status; +} +static DEVICE_ATTR_RO(timeleft); + +static ssize_t timeout_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct watchdog_device *wdd = dev_get_drvdata(dev); + + return sprintf(buf, "%u\n", wdd->timeout); +} +static DEVICE_ATTR_RO(timeout); + +static ssize_t identity_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct watchdog_device *wdd = dev_get_drvdata(dev); + + return sprintf(buf, "%s\n", wdd->info->identity); +} +static DEVICE_ATTR_RO(identity); + +static ssize_t state_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct watchdog_device *wdd = dev_get_drvdata(dev); + + if (watchdog_active(wdd)) + return sprintf(buf, "active\n"); + + return sprintf(buf, "inactive\n"); +} +static DEVICE_ATTR_RO(state); + +static umode_t wdt_is_visible(struct kobject *kobj, struct attribute *attr, + int n) +{ + struct device *dev = container_of(kobj, struct device, kobj); + struct watchdog_device *wdd = dev_get_drvdata(dev); + umode_t mode = attr->mode; + + if (attr == &dev_attr_status.attr && !wdd->ops->status) + mode = 0; + else if (attr == &dev_attr_timeleft.attr && !wdd->ops->get_timeleft) + mode = 0; + + return mode; +} +static struct attribute *wdt_attrs[] = { + &dev_attr_state.attr, + &dev_attr_identity.attr, + &dev_attr_timeout.attr, + &dev_attr_timeleft.attr, + &dev_attr_bootstatus.attr, + &dev_attr_status.attr, + &dev_attr_nowayout.attr, + NULL, +}; + +static const struct attribute_group wdt_group = { + .attrs = wdt_attrs, + .is_visible = wdt_is_visible, +}; +__ATTRIBUTE_GROUPS(wdt); + /* * watchdog_ioctl_op: call the watchdog drivers ioctl op if defined * @wddev: the watchdog device to do the ioctl on @@ -581,6 +690,7 @@ int watchdog_dev_unregister(struct watchdog_device *watchdog) static struct class watchdog_class = { .name = "watchdog", .owner = THIS_MODULE, + .dev_groups = wdt_groups, }; /* -- 2.5.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH V4 0/2] watchdog: Sysfs status read support 2015-09-07 4:24 [PATCH V4 0/2] watchdog: Sysfs status read support Pratyush Anand 2015-09-07 4:24 ` [PATCH V4 1/2] watchdog: Use static struct class watchdog_class in stead of pointer Pratyush Anand [not found] ` <cover.1441599217.git.panand-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> @ 2015-10-06 6:43 ` Pratyush Anand 2015-10-06 13:27 ` Guenter Roeck 2 siblings, 1 reply; 7+ messages in thread From: Pratyush Anand @ 2015-10-06 6:43 UTC (permalink / raw) To: Wim Van Sebroeck; +Cc: dyoung, dzickus, linux-watchdog, linux Hi Wim, I did not see it in v4.3-rc3 Fixes. This has already been reviewed by Guenter. Please let me know if I need to do anything more around it. ~Pratyush On 07/09/2015:09:54:50 AM, Pratyush Anand wrote: > These patches provide support to read different watchdog device status > through sysfs interface. > > Changes since V3: > * Added Reviewed by tag > * Corrected a checkpatch warning > > Changes since V2: > * Used static struct class watchdog_class in stead of pointer. It helped in > keep using device_create(). > * Above logic was moved to a separate patch. > * Changed subject line of other patch to look more relevant > > Changes since V1(RFC): > * Removed keepalive and start ABI > * timeout is read only now > * state returns text > * only supported ABI visible > * ABI contact changed to MAINTAINER > * unnecessary mutex removed > * aligned continuation with '(' > * unnecessary initialization of status (= 0) corrected > * unnecessary else removed > * used __ATTRIBUTE_GROUPS > * removed watchdog_device_create and added functionality in > * watchdog_dev_register. > * optimized nowayout_show > * Now no -EOPNOTSUPP return for timeout read in case of wdd->timeout = 0. > > Pratyush Anand (2): > watchdog: Use static struct class watchdog_class in stead of pointer > watchdog: Read device status through sysfs attributes > > Documentation/ABI/testing/sysfs-class-watchdog | 51 ++++++++++ > drivers/watchdog/watchdog_core.c | 17 +--- > drivers/watchdog/watchdog_core.h | 2 +- > drivers/watchdog/watchdog_dev.c | 136 ++++++++++++++++++++++++- > 4 files changed, 187 insertions(+), 19 deletions(-) > create mode 100644 Documentation/ABI/testing/sysfs-class-watchdog > > -- > 2.5.0 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH V4 0/2] watchdog: Sysfs status read support 2015-10-06 6:43 ` [PATCH V4 0/2] watchdog: Sysfs status read support Pratyush Anand @ 2015-10-06 13:27 ` Guenter Roeck 2015-11-16 6:01 ` Pratyush Anand 0 siblings, 1 reply; 7+ messages in thread From: Guenter Roeck @ 2015-10-06 13:27 UTC (permalink / raw) To: Pratyush Anand, Wim Van Sebroeck; +Cc: dyoung, dzickus, linux-watchdog On 10/05/2015 11:43 PM, Pratyush Anand wrote: > Hi Wim, > > I did not see it in v4.3-rc3 Fixes. > This has already been reviewed by Guenter. > Please let me know if I need to do anything more around it. > It is too late for 4.3, so I guess it will have to wait for 4.4. Guenter > ~Pratyush > > On 07/09/2015:09:54:50 AM, Pratyush Anand wrote: >> These patches provide support to read different watchdog device status >> through sysfs interface. >> >> Changes since V3: >> * Added Reviewed by tag >> * Corrected a checkpatch warning >> >> Changes since V2: >> * Used static struct class watchdog_class in stead of pointer. It helped in >> keep using device_create(). >> * Above logic was moved to a separate patch. >> * Changed subject line of other patch to look more relevant >> >> Changes since V1(RFC): >> * Removed keepalive and start ABI >> * timeout is read only now >> * state returns text >> * only supported ABI visible >> * ABI contact changed to MAINTAINER >> * unnecessary mutex removed >> * aligned continuation with '(' >> * unnecessary initialization of status (= 0) corrected >> * unnecessary else removed >> * used __ATTRIBUTE_GROUPS >> * removed watchdog_device_create and added functionality in >> * watchdog_dev_register. >> * optimized nowayout_show >> * Now no -EOPNOTSUPP return for timeout read in case of wdd->timeout = 0. >> >> Pratyush Anand (2): >> watchdog: Use static struct class watchdog_class in stead of pointer >> watchdog: Read device status through sysfs attributes >> >> Documentation/ABI/testing/sysfs-class-watchdog | 51 ++++++++++ >> drivers/watchdog/watchdog_core.c | 17 +--- >> drivers/watchdog/watchdog_core.h | 2 +- >> drivers/watchdog/watchdog_dev.c | 136 ++++++++++++++++++++++++- >> 4 files changed, 187 insertions(+), 19 deletions(-) >> create mode 100644 Documentation/ABI/testing/sysfs-class-watchdog >> >> -- >> 2.5.0 > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH V4 0/2] watchdog: Sysfs status read support 2015-10-06 13:27 ` Guenter Roeck @ 2015-11-16 6:01 ` Pratyush Anand 0 siblings, 0 replies; 7+ messages in thread From: Pratyush Anand @ 2015-11-16 6:01 UTC (permalink / raw) To: Wim Van Sebroeck; +Cc: dyoung, dzickus, Guenter Roeck, linux-watchdog Hi Wim, On 06/10/2015:06:27:30 AM, Guenter Roeck wrote: > On 10/05/2015 11:43 PM, Pratyush Anand wrote: > >Hi Wim, > > > >I did not see it in v4.3-rc3 Fixes. > >This has already been reviewed by Guenter. > >Please let me know if I need to do anything more around it. > > > It is too late for 4.3, so I guess it will have to wait for 4.4. I do not see it in git://www.linux-watchdog.org/linux-watchdog : master Please pick it, so that it is not missed in 4.4 ~Pratyush ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2015-11-16 6:01 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-07 4:24 [PATCH V4 0/2] watchdog: Sysfs status read support Pratyush Anand
2015-09-07 4:24 ` [PATCH V4 1/2] watchdog: Use static struct class watchdog_class in stead of pointer Pratyush Anand
[not found] ` <cover.1441599217.git.panand-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-09-07 4:24 ` [PATCH V4 2/2] watchdog: Read device status through sysfs attributes Pratyush Anand
2015-09-07 4:24 ` Pratyush Anand
2015-10-06 6:43 ` [PATCH V4 0/2] watchdog: Sysfs status read support Pratyush Anand
2015-10-06 13:27 ` Guenter Roeck
2015-11-16 6:01 ` Pratyush Anand
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.