diff options
author | John Stultz <john.stultz@linaro.org> | 2011-01-20 15:26:12 -0800 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2011-01-21 17:38:19 +0100 |
commit | aa0be0f4659f91f31e45adc422b1788cb36ffddc (patch) | |
tree | 02eed33d672f36e41e735c5060acb9d2446c23af /include/linux/rtc.h | |
parent | db6b175fa6ad1408cbb2fb62949a6d55cfece03e (diff) | |
download | linux-aa0be0f4659f91f31e45adc422b1788cb36ffddc.tar.gz linux-aa0be0f4659f91f31e45adc422b1788cb36ffddc.tar.bz2 linux-aa0be0f4659f91f31e45adc422b1788cb36ffddc.zip |
RTC: Propagate error handling via rtc_timer_enqueue properly
In cases where RTC hardware does not support alarms, the virtualized
RTC interfaces did not have a way to propagate the error up to userland.
This patch extends rtc_timer_enqueue so it catches errors from the hardware
and returns them upwards to the virtualized interfaces. To simplify error
handling, it also internalizes the management of the timer->enabled bit
into rtc_timer_enqueue and rtc_timer_remove.
Also makes rtc_timer_enqueue and rtc_timer_remove static.
Reported-by: David Daney <ddaney@caviumnetworks.com>
Reported-by: Andreas Schwab <schwab@linux-m68k.org>
Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Diagnosed-by: David Daney <ddaney@caviumnetworks.com>
Tested-by: David Daney <ddaney@caviumnetworks.com>
Signed-off-by: John Stultz <john.stultz@linaro.org>
LKML-Reference: <1295565973-14358-1-git-send-email-john.stultz@linaro.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include/linux/rtc.h')
-rw-r--r-- | include/linux/rtc.h | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/include/linux/rtc.h b/include/linux/rtc.h index ea760698e6fe..a0b639f8e805 100644 --- a/include/linux/rtc.h +++ b/include/linux/rtc.h @@ -244,8 +244,6 @@ int rtc_register(rtc_task_t *task); int rtc_unregister(rtc_task_t *task); int rtc_control(rtc_task_t *t, unsigned int cmd, unsigned long arg); -void rtc_timer_enqueue(struct rtc_device *rtc, struct rtc_timer *timer); -void rtc_timer_remove(struct rtc_device *rtc, struct rtc_timer *timer); void rtc_timer_init(struct rtc_timer *timer, void (*f)(void* p), void* data); int rtc_timer_start(struct rtc_device *rtc, struct rtc_timer* timer, ktime_t expires, ktime_t period); |