.\" rtc.4
.\" Copyright 2002 Urs Thuermann (urs@isnogud.escape.de)
.\"
.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, see
.\" <http://www.gnu.org/licenses/>.
.\" %%%LICENSE_END
.\"
.\" $Id: rtc.4,v 1.4 2005/12/05 17:19:49 urs Exp $
.\"
.\" 2006-02-08 Various additions by mtk
.\" 2006-11-26 cleanup, cover the generic rtc framework; David Brownell
.\"
.TH RTC 4 2017-09-15 "Linux" "Linux Programmer's Manual"
.SH NAME
rtc \- real-time clock
.SH SYNOPSIS
#include <linux/rtc.h>
.PP
.BI "int ioctl(" fd ", RTC_" request ", " param ");"
.SH DESCRIPTION
This is the interface to drivers for real-time clocks (RTCs).
.PP
Most computers have one or more hardware clocks which record the
current "wall clock" time.
These are called "Real Time Clocks" (RTCs).
One of these usually has battery backup power so that it tracks the time
even while the computer is turned off.
RTCs often provide alarms and other interrupts.
.PP
All i386 PCs, and ACPI-based systems, have an RTC that is compatible with
the Motorola MC146818 chip on the original PC/AT.
Today such an RTC is usually integrated into the mainboard's chipset
(south bridge), and uses a replaceable coin-sized backup battery.
.PP
Non-PC systems, such as embedded systems built around system-on-chip
processors, use other implementations.
They usually won't offer the same functionality as the RTC from a PC/AT.
.SS RTC vs system clock
RTCs should not be confused with the system clock, which is
a software clock maintained by the kernel and used to implement
.BR gettimeofday (2)
and
.BR time (2),
as well as setting timestamps on files, and so on.
The system clock reports seconds and microseconds since a start point,
defined to be the POSIX Epoch: 1970-01-01 00:00:00 +0000 (UTC).
(One common implementation counts timer interrupts, once
per "jiffy", at a frequency of 100, 250, or 1000 Hz.)
That is, it is supposed to report wall clock time, which RTCs also do.
.PP
A key difference between an RTC and the system clock is that RTCs
run even when the system is in a low power state (including "off"),
and the system clock can't.
Until it is initialized, the system clock can only report time since
system boot ... not since the POSIX Epoch.
So at boot time, and after resuming from a system low power state, the
system clock will often be set to the current wall clock time using an RTC.
Systems without an RTC need to set the system clock using another clock,
maybe across the network or by entering that data manually.
.SS RTC functionality
RTCs can be read and written with
.BR hwclock (8),
or directly with the ioctl requests listed below.
.PP
Besides tracking the date and time, many RTCs can also generate
interrupts
.IP * 3
on every clock update (i.e., once per second);
.IP *
at periodic intervals with a frequency that can be set to
any power-of-2 multiple in the range 2 Hz to 8192 Hz;
.IP *
on reaching a previously specified alarm time.
.PP
Each of those interrupt sources can be enabled or disabled separately.
On many systems, the alarm interrupt can be configured as a system wakeup
event, which can resume the system from a low power state such as
Suspend-to-RAM (STR, called S3 in ACPI systems),
Hibernation (called S4 in ACPI systems),
or even "off" (called S5 in ACPI systems).
On some systems, the battery backed RTC can't issue
interrupts, but another one can.
.PP
The
.I /dev/rtc
(or
.IR /dev/rtc0 ,
.IR /dev/rtc1 ,
etc.)
device can be opened only once (until it is closed) and it is read-only.
On
.BR read (2)
and
.BR select (2)
the calling process is blocked until the next interrupt from that RTC
is received.
Following the interrupt, the process can read a long integer, of which
the least significant byte contains a bit mask encoding
the types of interrupt that occurred,
while the remaining 3 bytes contain the number of interrupts since the
last
.BR read (2).
.SS ioctl(2) interface
The following
.BR ioctl (2)
requests are defined on file descriptors connected to RTC devices:
.TP
.B RTC_RD_TIME
Returns this RTC's time in the following structure:
.IP
.in +4n
.EX
struct rtc_time {
    int tm_sec;
    int tm_min;
    int tm_hour;
    int tm_mday;
    int tm_mon;
    int tm_year;
    int tm_wday;     /* unused */
    int tm_yday;     /* unused */
    int tm_isdst;    /* unused */
};
.EE
.in
.IP
The fields in this structure have the same meaning and ranges as for the
.I tm
structure described in
.BR gmtime (3).
A pointer to this structure should be passed as the third
.BR ioctl (2)
argument.
.TP
.B RTC_SET_TIME
Sets this RTC's time to the time specified by the
.I rtc_time
structure pointed to by the third
.BR ioctl (2)
argument.
To set the
RTC's time the process must be privileged (i.e., have the
.B CAP_SYS_TIME
capability).
.TP
.BR RTC_ALM_READ ", " RTC_ALM_SET
Read and set the alarm time, for RTCs that support alarms.
The alarm interrupt must be separately enabled or disabled using the
.BR RTC_AIE_ON ", " RTC_AIE_OFF
requests.
The third
.BR ioctl (2)
argument is a pointer to an
.I rtc_time
structure.
Only the
.IR tm_sec ,
.IR tm_min ,
and
.I tm_hour
fields of this structure are used.
.TP
.BR RTC_IRQP_READ ", " RTC_IRQP_SET
Read and set the frequency for periodic interrupts,
for RTCs that support periodic interrupts.
The periodic interrupt must be separately enabled or disabled using the
.BR RTC_PIE_ON ", " RTC_PIE_OFF
requests.
The third
.BR ioctl (2)
argument is an
.I "unsigned long\ *"
or an
.IR "unsigned long" ,
respectively.
The value is the frequency in interrupts per second.
The set of allowable frequencies is the multiples of two
in the range 2 to 8192.
Only a privileged process (i.e., one having the
.B CAP_SYS_RESOURCE
capability) can set frequencies above the value specified in
.IR /proc/sys/dev/rtc/max-user-freq .
(This file contains the value 64 by default.)
.TP
.BR RTC_AIE_ON ", " RTC_AIE_OFF
Enable or disable the alarm interrupt, for RTCs that support alarms.
The third
.BR ioctl (2)
argument is ignored.
.TP
.BR RTC_UIE_ON ", " RTC_UIE_OFF
Enable or disable the interrupt on every clock update,
for RTCs that support this once-per-second interrupt.
The third
.BR ioctl (2)
argument is ignored.
.TP
.BR RTC_PIE_ON ", " RTC_PIE_OFF
Enable or disable the periodic interrupt,
for RTCs that support these periodic interrupts.
The third
.BR ioctl (2)
argument is ignored.
Only a privileged process (i.e., one having the
.B CAP_SYS_RESOURCE
capability) can enable the periodic interrupt if the frequency is
currently set above the value specified in
.IR /proc/sys/dev/rtc/max-user-freq .
.TP
.BR RTC_EPOCH_READ ", " RTC_EPOCH_SET
Many RTCs encode the year in an 8-bit register which is either
interpreted as an 8-bit binary number or as a BCD number.
In both cases,
the number is interpreted relative to this RTC's Epoch.
The RTC's Epoch is
initialized to 1900 on most systems but on Alpha and MIPS it might
also be initialized to 1952, 1980, or 2000, depending on the value of
an RTC register for the year.
With some RTCs,
these operations can be used to read or to set the RTC's Epoch,
respectively.
The third
.BR ioctl (2)
argument is an
.I "unsigned long\ *"
or an
.IR "unsigned long" ,
respectively, and the value returned (or assigned) is the Epoch.
To set the RTC's Epoch the process must be privileged (i.e., have the
.B CAP_SYS_TIME
capability).
.TP
.BR RTC_WKALM_RD ", " RTC_WKALM_SET
Some RTCs support a more powerful alarm interface, using these ioctls
to read or write the RTC's alarm time (respectively) with this structure:
.PP
.RS
.in +4n
.EX
struct rtc_wkalrm {
    unsigned char enabled;
    unsigned char pending;
    struct rtc_time time;
};
.EE
.in
.RE
.IP
The
.I enabled
flag is used to enable or disable the alarm interrupt,
or to read its current status; when using these calls,
.BR RTC_AIE_ON " and " RTC_AIE_OFF
are not used.
The
.I pending
flag is used by
.B RTC_WKALM_RD
to report a pending interrupt
(so it's mostly useless on Linux, except when talking
to the RTC managed by EFI firmware).
The
.I time
field is as used with
.B RTC_ALM_READ
and
.B RTC_ALM_SET
except that the
.IR tm_mday ,
.IR tm_mon ,
and
.I tm_year
fields are also valid.
A pointer to this structure should be passed as the third
.BR ioctl (2)
argument.
.SH FILES
.TP
.IR /dev/rtc ", " /dev/rtc0 ", " /dev/rtc1 ", etc."
RTC special character device files.
.TP
.IR /proc/driver/rtc
status of the (first) RTC.
.SH NOTES
When the kernel's system time is synchronized with an external
reference using
.BR adjtimex (2)
it will update a designated RTC periodically every 11 minutes.
To do so, the kernel has to briefly turn off periodic interrupts;
this might affect programs using that RTC.
.PP
An RTC's Epoch has nothing to do with the POSIX Epoch which is
used only for the system clock.
.PP
If the year according to the RTC's Epoch and the year register is
less than 1970 it is assumed to be 100 years later, that is, between 2000
and 2069.
.PP
Some RTCs support "wildcard" values in alarm fields, to support
scenarios like periodic alarms at fifteen minutes after every hour,
or on the first day of each month.
Such usage is nonportable;
portable user-space code expects only a single alarm interrupt, and
will either disable or reinitialize the alarm after receiving it.
.PP
Some RTCs support periodic interrupts with periods that are multiples
of a second rather than fractions of a second;
multiple alarms;
programmable output clock signals;
nonvolatile memory;
and other hardware
capabilities that are not currently exposed by this API.
.SH SEE ALSO
.BR date (1),
.BR adjtimex (2),
.BR gettimeofday (2),
.BR settimeofday (2),
.BR stime (2),
.BR time (2),
.BR gmtime (3),
.BR time (7),
.BR hwclock (8)
.PP
.I Documentation/rtc.txt
in the Linux kernel source tree
