1
我正在嘗試在Linux設備上配置RTC警報。我用一個例子來自RTC documentation:Linux RTC鬧鐘是否使用相對或絕對時間?
int retval
struct rtc_time rtc_tm;
/* .... */
/* Read the RTC time/date */
retval = ioctl(fd, RTC_RD_TIME, &rtc_tm);
if (retval == -1) {
exit(errno);
}
/* Set the alarm to 5 sec in the future, and check for rollover */
rtc_tm.tm_sec += 5;
if (rtc_tm.tm_sec >= 60) {
rtc_tm.tm_sec %= 60;
rtc_tm.tm_min++;
}
if (rtc_tm.tm_min == 60) {
rtc_tm.tm_min = 0;
rtc_tm.tm_hour++;
}
if (rtc_tm.tm_hour == 24)
rtc_tm.tm_hour = 0;
retval = ioctl(fd, RTC_ALM_SET, &rtc_tm);
if (retval == -1) {
exit(errno);
}
該代碼段使用絕對時間(從元開始),並沒有爲我工作。我認爲這是由於硬件中的一個錯誤,但在一些看似隨機的時間之後,鬧鐘響起了。我已經設法找到了唯一的其他部分文件是在評論rtc.cc:
case RTC_ALM_SET: /* Store a time into the alarm */
{
/*
* This expects a struct rtc_time. Writing 0xff means
* "don't care" or "match all". Only the tm_hour,
* tm_min and tm_sec are used.
*/
,只有小時,分鐘和秒被使用的事實表明,時間是相對的那一刻IOCTL調用時。
是否應該將時間傳遞給ioctl(fd,RTC_ALM_SET,& rtc_tm)是相對的還是絕對的?
謝謝!如果將絕對時間傳遞給RTC_ALM_SET是正確的,那麼似乎我的問題一定是由其他問題引起的。 –