1 ======================================= 2 Real Time Clock (RTC) Drivers for Linux 3 ======================================= 4 5 When Linux developers talk about a "Real Time 6 something that tracks wall clock time and is b 7 works even with system power off. Such clocks 8 the local time zone or daylight savings time - 9 with MS-Windows -- but will instead be set to 10 (UTC, formerly "Greenwich Mean Time"). 11 12 The newest non-PC hardware tends to just count 13 system call reports, but RTCs also very common 14 the Gregorian calendar and 24 hour time, as re 15 16 Linux has two largely-compatible userspace RTC 17 need to know about: 18 19 * /dev/rtc ... is the RTC provided by PC 20 so it's not very portable to non-x86 s 21 22 * /dev/rtc0, /dev/rtc1 ... are part of a 23 supported by a wide variety of RTC chi 24 25 Programmers need to understand that the PC/AT 26 always available, and some systems can do much 27 RTCs use the same API to make requests in both 28 different filenames of course), but the hardwa 29 same functionality. For example, not every RT 30 IRQ, so they can't all issue alarms; and where 31 only issue an alarm up to 24 hours in the futu 32 be able to schedule one any time in the upcomi 33 34 35 Old PC/AT-Compatible driver: /dev/rtc 36 -------------------------------------- 37 38 All PCs (even Alpha machines) have a Real Time 39 Usually they are built into the chipset of the 40 actually have a Motorola MC146818 (or clone) o 41 clock that keeps the date and time while your 42 43 ACPI has standardized that MC146818 functional 44 a few ways (enabling longer alarm periods, and 45 That functionality is NOT exposed in the old d 46 47 However it can also be used to generate signal 48 relatively fast 8192Hz, in increments of power 49 are reported by interrupt number 8. (Oh! So *t 50 for...) It can also function as a 24hr alarm, 51 alarm goes off. The alarm can also be programm 52 subset of the three programmable values, meani 53 ring on the 30th second of the 30th minute of 54 The clock can also be set to generate an inter 55 update, thus generating a 1Hz signal. 56 57 The interrupts are reported via /dev/rtc (majo 58 character device) in the form of an unsigned l 59 the type of interrupt (update-done, alarm-rang 60 raised, and the remaining bytes contain the nu 61 the last read. Status information is reported 62 /proc/driver/rtc if the /proc filesystem was e 63 built in locking so that only one process is a 64 interface open at a time. 65 66 A user process can monitor these interrupts by 67 select(2) on /dev/rtc -- either will block/sto 68 the next interrupt is received. This is useful 69 reasonably high frequency data acquisition whe 70 burn up 100% CPU by polling gettimeofday etc. 71 72 At high frequencies, or under high loads, the 73 the number of interrupts received since the la 74 there has been any interrupt "pileup" so to sp 75 typical 486-33 running a tight read loop on /d 76 occasional interrupt pileup (i.e. > 1 IRQ even 77 frequencies above 1024Hz. So you really should 78 of the value you read, especially at frequenci 79 normal timer interrupt, which is 100Hz. 80 81 Programming and/or enabling interrupt frequenc 82 only allowed by root. This is perhaps a bit co 83 an evil user generating lots of IRQs on a slow 84 a negative impact on performance. This 64Hz li 85 a different value to /proc/sys/dev/rtc/max-use 86 interrupt handler is only a few lines of code 87 of this effect. 88 89 Also, if the kernel time is synchronized with 90 kernel will write the time back to the CMOS cl 91 the process of doing this, the kernel briefly 92 interrupts, so be aware of this if you are doi 93 don't synchronize the kernel time with an exte 94 whatever) then the kernel will keep its hands 95 exclusive access to the device for your applic 96 97 The alarm and/or interrupt frequency are progr 98 various ioctl(2) calls as listed in ./include/ 99 Rather than write 50 pages describing the ioct 100 perhaps more useful to include a small test pr 101 how to use them, and demonstrates the features 102 probably a lot more useful to people intereste 103 that will be using this driver. See the code 104 105 (The original /dev/rtc driver was written by P 106 107 108 New portable "RTC Class" drivers: /dev/rtcN 109 -------------------------------------------- 110 111 Because Linux supports many non-ACPI and non-P 112 have more than one RTC style clock, it needed 113 than expecting a single battery-backed MC14681 114 Accordingly, a new "RTC Class" framework has b 115 three different userspace interfaces: 116 117 * /dev/rtcN ... much the same as the old 118 119 * /sys/class/rtc/rtcN ... sysfs attribut 120 access to some RTC attributes. 121 122 * /proc/driver/rtc ... the system clock 123 using a procfs interface. If there is 124 rtc0 is used by default. More informat 125 here than through sysfs. 126 127 The RTC Class framework supports a wide variet 128 integrated into embeddable system-on-chip (SOC 129 using I2C, SPI, or some other bus to communica 130 even support for PC-style RTCs ... including t 131 through ACPI. 132 133 The new framework also removes the "one RTC pe 134 example, maybe the low-power battery-backed RT 135 a high functionality RTC is integrated into th 136 the system clock from the discrete RTC, but us 137 other tasks, because of its greater functional 138 139 Check out tools/testing/selftests/rtc/rtctest. 140 ioctl interface.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.