Message ID | 20090904170928.GA26009@srcf.ucam.org |
---|---|
State | Accepted |
Headers | show |
On Fri, 4 Sep 2009 18:09:28 +0100 Matthew Garrett <mjg59@srcf.ucam.org> wrote: > Ok. How's this? > > commit 09895be2ef8528dc33ca8516ca4f5ccbec2ffb05 > Author: Matthew Garrett <mjg@redhat.com> > Date: Fri Sep 4 12:23:02 2009 -0400 perfect, ty. Acked-by: Alessandro Zummo <a.zummo@towertech.it>
On Fri, Sep 04, 2009 at 06:09:28PM +0100, Matthew Garrett wrote: > +hctosys: 1 if the RTC provided the system time at boot via the > + CONFIG_RTC_HCTOSYS kernel option, 0 otherwise ... > +static ssize_t > +rtc_sysfs_show_hctosys(struct device *dev, struct device_attribute *attr, > + char *buf) > +{ > +#ifdef CONFIG_RTC_HCTOSYS_DEVICE > + if (strcmp(dev_name(&to_rtc_device(dev)->dev), > + CONFIG_RTC_HCTOSYS_DEVICE) == 0) > + return sprintf(buf, "1\n"); > + else > +#endif Strictly speaking this only reports if the RTC was configured to provide the system time at boot, it does not check to see if it actually succeeded in doing so. Obviously failures here are a relatively rare occurrance but they can happen. I don't think it's worth changing the code since it's unlikely userspace will be able to do any better than the kernel did but it might be worth updating the documentation just in case. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to "rtc-linux". Membership options at http://groups.google.com/group/rtc-linux . Please read http://groups.google.com/group/rtc-linux/web/checklist before submitting a driver. -~----------~----~----~----~------~----~------~--~---
diff --git a/Documentation/rtc.txt b/Documentation/rtc.txt index 216bb8c..baac51f 100644 --- a/Documentation/rtc.txt +++ b/Documentation/rtc.txt @@ -143,6 +143,8 @@ rtc attributes without requiring the use of ioctls. All dates and times are in the RTC's timezone, rather than in system time. date: RTC-provided date +hctosys: 1 if the RTC provided the system time at boot via the + CONFIG_RTC_HCTOSYS kernel option, 0 otherwise max_user_freq: The maximum interrupt rate an unprivileged user may request from this RTC. name: The name of the RTC corresponding to this sysfs directory diff --git a/drivers/rtc/rtc-sysfs.c b/drivers/rtc/rtc-sysfs.c index 2531ce4..7dd23a6 100644 --- a/drivers/rtc/rtc-sysfs.c +++ b/drivers/rtc/rtc-sysfs.c @@ -102,6 +102,19 @@ rtc_sysfs_set_max_user_freq(struct device *dev, struct device_attribute *attr, return n; } +static ssize_t +rtc_sysfs_show_hctosys(struct device *dev, struct device_attribute *attr, + char *buf) +{ +#ifdef CONFIG_RTC_HCTOSYS_DEVICE + if (strcmp(dev_name(&to_rtc_device(dev)->dev), + CONFIG_RTC_HCTOSYS_DEVICE) == 0) + return sprintf(buf, "1\n"); + else +#endif + return sprintf(buf, "0\n"); +} + static struct device_attribute rtc_attrs[] = { __ATTR(name, S_IRUGO, rtc_sysfs_show_name, NULL), __ATTR(date, S_IRUGO, rtc_sysfs_show_date, NULL), @@ -109,6 +122,7 @@ static struct device_attribute rtc_attrs[] = { __ATTR(since_epoch, S_IRUGO, rtc_sysfs_show_since_epoch, NULL), __ATTR(max_user_freq, S_IRUGO | S_IWUSR, rtc_sysfs_show_max_user_freq, rtc_sysfs_set_max_user_freq), + __ATTR(hctosys, S_IRUGO, rtc_sysfs_show_hctosys, NULL), { }, };
Ok. How's this? commit 09895be2ef8528dc33ca8516ca4f5ccbec2ffb05 Author: Matthew Garrett <mjg@redhat.com> Date: Fri Sep 4 12:23:02 2009 -0400 rtc: Add hctosys sysfs attribute CONFIG_RTC_HCTOSYS allows the kernel to read the system time from the RTC at boot and resume, avoiding the need for userspace to do so. Unfortunately userspace currently has no way to know whether this configuration option is enabled and thus cannot sensibly choose whether to run hwclock itself or not. Add a hctosys sysfs attribute which indicates whether a given RTC set the system clock. Signed-off-by: Matthew Garrett <mjg@redhat.com>