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에 절대 시간을 전달하면 문제가 발생해야합니다. –