From: Nikolay Balandin <nbalandin@xxxxxxxxxxxxx> Update ioctl return values for rtc example code to correctly determine does the rtc driver support corresponding IRQ type or not. According to the rtc subsystem interface return values: For the update and alarm interrupts rtc subsystem interface will return -EINVAL error code if a device driver does not implement corresponding handler (RTC_UIE_ON or RTC_ALM_SET). For the periodic IRQs (RTC_IRQP_READ) rtc-dev will return 0 as a period if rtc->irq_freq property is not initialized. Signed-off-by: Nikolay Balandin <nbalandin@xxxxxxxxxxxxx> --- Documentation/rtc.txt | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Documentation/rtc.txt b/Documentation/rtc.txt index 32aa400..f911e4a 100644 --- a/Documentation/rtc.txt +++ b/Documentation/rtc.txt @@ -270,7 +270,7 @@ int main(int argc, char **argv) /* Turn on update interrupts (one per second) */ retval = ioctl(fd, RTC_UIE_ON, 0); if (retval == -1) { - if (errno == ENOTTY) { + if (errno == EINVAL) { fprintf(stderr, "\n...Update IRQs not supported.\n"); goto test_READ; @@ -353,7 +353,7 @@ test_READ: retval = ioctl(fd, RTC_ALM_SET, &rtc_tm); if (retval == -1) { - if (errno == ENOTTY) { + if (errno == EINVAL) { fprintf(stderr, "\n...Alarm IRQs not supported.\n"); goto test_PIE; @@ -401,13 +401,12 @@ test_PIE: /* Read periodic IRQ rate */ retval = ioctl(fd, RTC_IRQP_READ, &tmp); if (retval == -1) { - /* not all RTCs support periodic IRQs */ - if (errno == ENOTTY) { - fprintf(stderr, "\nNo periodic IRQ support\n"); - goto done; - } perror("RTC_IRQP_READ ioctl"); exit(errno); + } else if (tmp == 0) { + /* not all RTCs support periodic IRQs */ + fprintf(stderr, "\nNo periodic IRQ support\n"); + goto done; } fprintf(stderr, "\nPeriodic IRQ rate is %ldHz.\n", tmp); -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html