android_kernel_samsung_sm8650/tools/testing/selftests/timers
Andrey Smirnov cd26fca202 rtc: rtctest: Change alarm IRQ support detection
For old style drivers, call a call to ioctl(..., RTC_ALM_SET, ...):

    - char/ds1302.c will always return -EINVAL
    - char/genrtc.c: will always return -EINVAL
    - char/rtc.c will succeed regardless if IRQs are supported or not
    - char/efirtc.c will always return -EINVAL
    - input/misc/hp_sdc_rtc.c ... that ioctl code is a good lesson about
      ifdefing code out and punting implementation ... and it will
      always return -EINVAL

For new style rtc drivers, a call to ioctl(..., RTC_ALM_SET, ...) never
results in a call to __rtc_set_alarm, since struct rtc_wkalarm passed to
rtc_set_alarm has 'enabled' field set to 0. This means that
rtc->ops->set_alarm driver hook is never called in that ioctl. Since no
driver code interaction happens as a part of that call, using its
results to ascertain properties of the driver is not going to work. To
remedy this - use the result of RTC_AIE_ON to make the judgement.

This patch also changes ENOTTY to EINVAL as an error code value that
would tell us that IRQs are not supported. There are three reason for
this:

 - As mentioned above old style driver never returns ENOTTY for this
   ioctl

 - In it's code __rtc_set_alarm() returns -EINVAL if rtc->ops->set_alarm
   method is not provided by the driver, so one reason for change is to
   be consistent with that code path.

 - A call to ioctl(..., RTC_UIE_ON, ...) will result in a call to
   rtc_update_irq_enable() and then __rtc_set_alarm(), which, if IRQs
   are not supported by the driver, will result in a non-zero error
   code. Returning ENOTTY in that case would:

   	 a) Not be consistent with other codepaths of
   	 rtc_update_irq_enable, for example the check of
   	 rtc->uie_unsupported

	 b) Would break update IRQ emulation code since that codpath
	 expects EINVAL

	 c) Would break test's logic for feature support detection in
	 the case of RTC_UIE_ON ioctl

Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
2016-06-26 23:43:44 +02:00
..
.gitignore update .gitignore in selftests/timers 2016-01-07 13:38:03 -07:00
adjtick.c timers, kselftest: Add 'adjtick' test to validate adjtimex() tick adjustments 2015-10-12 09:51:34 +02:00
alarmtimer-suspend.c treewide: Fix typo in printk 2016-02-15 11:18:22 +01:00
change_skew.c selftests/timers: Add change_skew test from timetest suite 2015-03-12 13:22:15 -06:00
clocksource-switch.c selftests/timers: fix write return value handlng 2015-12-10 22:41:05 -08:00
inconsistency-check.c kselftests: timers: Reduce default runtime on inconsistency-check and set-timer-lat 2015-03-31 13:44:32 -06:00
leap-a-day.c selftest: Timers: Avoid signal deadlock in leap-a-day 2015-06-18 15:28:14 +02:00
leapcrash.c selftests/timers: Add leapcrash test from the timetest suite 2015-03-12 13:22:16 -06:00
Makefile timers, kselftest: Add 'adjtick' test to validate adjtimex() tick adjustments 2015-10-12 09:51:34 +02:00
mqueue-lat.c selftests/timers: Add mqueue latency test from the timetest suite 2015-03-12 13:22:14 -06:00
nanosleep.c selftests: Add missing #include directives 2015-11-03 16:53:53 -07:00
nsleep-lat.c selftests/timers: Add nsleep-lat test from timetest suite 2015-03-12 13:22:13 -06:00
posix_timers.c selftests/timers: Quiet warning due to lack of return check on brk 2015-03-12 13:22:12 -06:00
raw_skew.c selftests/timers: Add clock skew estimation test from timetest suite 2015-03-12 13:22:13 -06:00
rtctest.c rtc: rtctest: Change alarm IRQ support detection 2016-06-26 23:43:44 +02:00
set-2038.c selftests/timers: Add set-2038 test from timetest suite 2015-03-12 13:22:16 -06:00
set-tai.c selftests/timers: Add set-tai from the timetest suite 2015-03-12 13:22:16 -06:00
set-timer-lat.c kselftests: timers: Make set-timer-lat fail more gracefully for !CAP_WAKE_ALARM 2015-04-02 10:32:33 -06:00
skew_consistency.c selftests/timers: Add skew_consistency test from the timetests suite 2015-03-12 13:22:15 -06:00
threadtest.c kselftest/timers: Set default threadtest values to simplify execution scripts 2015-03-19 12:03:34 -06:00
valid-adjtimex.c kselftests: timers: Add adjtimex SETOFFSET validity tests 2016-01-26 16:26:06 +01:00