// SPDX-License-Identifier: GPL-2.0 /* * Real Time Clock Driver Test Program * * Copyright (c) 2018 Alexandre Belloni <alexandre.belloni@bootlin.com>
*/
rtc_read = rtc_time_to_timestamp(&rtc_tm); /* Time should not go backwards */
ASSERT_LE(prev_rtc_read, rtc_read); /* Time should not increase more then 1s at a time */
ASSERT_GE(prev_rtc_read + 1, rtc_read);
/* Sleep 11ms to avoid killing / overheating the RTC */
nanosleep_with_retries(READ_LOOP_SLEEP_MS * 1000000);
if (self->fd == -1 && errno == ENOENT)
SKIP(return, "Skipping test since %s does not exist", rtc_file);
ASSERT_NE(-1, self->fd);
alarm_state = get_rtc_alarm_state(self->fd, 1); if (alarm_state == RTC_ALARM_DISABLED)
SKIP(return, "Skipping test since alarms are not supported."); if (alarm_state == RTC_ALARM_RES_MINUTE)
SKIP(return, "Skipping test since alarms has only minute granularity.");
rc = ioctl(self->fd, RTC_ALM_SET, &tm); if (rc == -1) { /* * Report error if rtc alarm was enabled. Fallback to check ioctl * error number if rtc alarm state is unknown.
*/
ASSERT_EQ(RTC_ALARM_UNKNOWN, alarm_state);
ASSERT_EQ(EINVAL, errno);
TH_LOG("skip alarms are not supported."); return;
}
if (self->fd == -1 && errno == ENOENT)
SKIP(return, "Skipping test since %s does not exist", rtc_file);
ASSERT_NE(-1, self->fd);
alarm_state = get_rtc_alarm_state(self->fd, 1); if (alarm_state == RTC_ALARM_DISABLED)
SKIP(return, "Skipping test since alarms are not supported."); if (alarm_state == RTC_ALARM_RES_MINUTE)
SKIP(return, "Skipping test since alarms has only minute granularity.");
rc = ioctl(self->fd, RTC_WKALM_SET, &alarm); if (rc == -1) { /* * Report error if rtc alarm was enabled. Fallback to check ioctl * error number if rtc alarm state is unknown.
*/
ASSERT_EQ(RTC_ALARM_UNKNOWN, alarm_state);
ASSERT_EQ(EINVAL, errno);
TH_LOG("skip alarms are not supported."); return;
}
TH_LOG("Alarm time now set to %02d/%02d/%02d %02d:%02d:%02d.",
alarm.time.tm_mday, alarm.time.tm_mon + 1,
alarm.time.tm_year + 1900, alarm.time.tm_hour,
alarm.time.tm_min, alarm.time.tm_sec);
rc = ioctl(self->fd, RTC_ALM_SET, &tm); if (rc == -1) { /* * Report error if rtc alarm was enabled. Fallback to check ioctl * error number if rtc alarm state is unknown.
*/
ASSERT_EQ(RTC_ALARM_UNKNOWN, alarm_state);
ASSERT_EQ(EINVAL, errno);
TH_LOG("skip alarms are not supported."); return;
}
rc = ioctl(self->fd, RTC_WKALM_SET, &alarm); if (rc == -1) { /* * Report error if rtc alarm was enabled. Fallback to check ioctl * error number if rtc alarm state is unknown.
*/
ASSERT_EQ(RTC_ALARM_UNKNOWN, alarm_state);
ASSERT_EQ(EINVAL, errno);
TH_LOG("skip alarms are not supported."); return;
}
TH_LOG("Alarm time now set to %02d/%02d/%02d %02d:%02d:%02d.",
alarm.time.tm_mday, alarm.time.tm_mon + 1,
alarm.time.tm_year + 1900, alarm.time.tm_hour,
alarm.time.tm_min, alarm.time.tm_sec);
/* Run the test if rtc_file is accessible */ if (access(rtc_file, R_OK) == 0)
ret = test_harness_run(argc, argv); else
ksft_exit_skip("[SKIP]: Cannot access rtc file %s - Exiting\n",
rtc_file);
return ret;
}
Messung V0.5
¤ Dauer der Verarbeitung: 0.20 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.