是否可以使用clock_settime()将时间写入RTC芯片

时间:2013-04-07 08:30:56

标签: c linux time clock

/ dev / rtc上的ioctl RTC_SET_TIME可用于设置RTC芯片的时间和日期。但是/ dev / rtc只允许一个进程打开它。

所以我计划继续clock_settime(),不需要打开/ dev / rtc设备。但我不清楚它是否设置了RTC 芯片的日期和时间。

根据手册页,clock_settime() API支持时钟。哪一个写入RTC 芯片(如果它支持)?

CLOCK_REALTIME
    System-wide realtime clock. Setting this clock requires appropriate privileges. 
CLOCK_MONOTONIC
    Clock that cannot be set and represents monotonic time since some unspecified starting point. 
CLOCK_PROCESS_CPUTIME_ID
    High-resolution per-process timer from the CPU. 
CLOCK_THREAD_CPUTIME_ID
    Thread-specific CPU-time clock. 

2 个答案:

答案 0 :(得分:0)

不幸的是,不,clock_settime()不会更新实时时钟(RTC)。

我看到人们在调用system("rtc -s hw");强制进行RTC更新后使用clock_settime()

答案 1 :(得分:0)

简短答案:

clock_settime()是否写入RTC是不确定的,因此特定于实现


详细答案:

调用clock_settime(CLOCK_REALTIME,...)可以设置操作系统的系统时钟,这是内核中的软件时钟。没什么。

  • 操作系统可能会在关机时将系统时钟写入RTC。 (vxWorks
  • OS可以定期将系统时钟写入RTC,例如每11分钟一次。 (possible Linux config
  • 操作系统可以实施RTC漂移补偿。设置RTC可能会产生意外的结果。 (Linux with adtimex

底线:设置RTC之前,请先了解如何在平台上实现这些功能。