other versions
other sections
RTC(4) | Linux Programmer's Manual | RTC(4) |
名前¶
rtc - リアルタイムクロック書式¶
#include <linux/rtc.h>説明¶
これはリアルタイムクロック (RTC) のドライバのインタフェースである。RTC とシステムクロックの違い¶
RTC をシステムクロックと混同すべきではない。 システムクロックは、カーネルに管理されるソフトウェアクロックであり、 ファイルによるタイムスタンプ設定などとともに、 gettimeofday(2) や time(2) を実装するのに使用されている。 システムクロックは、POSIX における紀元 (Epoch; 1970-01-01 00:00:00 +0000 (UTC)) からの秒とミリ秒を表す。 1 つの一般的な実装ではタイマー割り込みを、"jiffy" 毎に 1 回、 100, 250, 1000 Hz という周波数でカウントする。RTC の機能¶
RTC は hwclock(8) または下記の ioctl リクエストで読み書きができる。- *
- クロックの更新毎 (つまり 1 秒毎)。
- *
- 2 Hz から 8192 Hz までの 2 の乗数の周波数で、定期的な間隔。
- *
- 前もって指定したアラーム時刻に達した時。
ioctl(2) インタフェース¶
以下の ioctl(2) リクエストが RTC デバイスの接続された ファイルディスクリプタに対して定義されている:- RTC_RD_TIME
- RTC の時刻を以下の構造体で返す:
-
struct rtc_time { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; /* 未使用 */ int tm_yday; /* 未使用 */ int tm_isdst; /* 未使用 */ };
- RTC_SET_TIME
- ioctl(2) の第 3 引き数が指す rtc_time 構造体の値を RTC 時刻に設定する。 RTC 時刻の設定する場合、プロセスは特権 (つまり CAP_SYS_TIME ケーパビリティ) を持たなければならない。
- RTC_ALM_READ, RTC_ALM_SET
- アラームがサポートされている RTC に対して、 アラーム時刻の読み込みと設定を行う。 アラーム割り込みは、 RTC_AIE_ON, RTC_AIE_OFF を使って、これとは別に有効または無効にしなければならない。 ioctl(2) の第 3 引き数は、 rtc_time 構造体へのポインタでなければならない。 この構造体の tm_sec, tm_min, tm_hour フィールドのみが使用される。
- RTC_IRQP_READ, RTC_IRQP_SET
- 周期的な割り込みがサポートされている RTC に対して、 周期的な割り込みの周波数の読み込みと設定を行う。 周期的な割り込みは、 RTC_PIE_ON, RTC_PIE_OFF を使って、これとは別に有効または無効にしなければならない。 ioctl(2) の第 3 引き数は、それぞれ unsigned long * と unsigned long である。 この値は 1 秒当たりの割り込みの回数である。 指定可能な周波数は、2 の乗数で 2 から 8192 の範囲である。 特権プロセス (つまり CAP_SYS_RESOURCE ケーパビリティを持つプロセス) のみが、 /proc/sys/dev/rtc/max-user-freq に書かれた上記の周波数を設定できる。 (このファイルにはデフォルトで 64 という値が書かれている)。
- RTC_AIE_ON, RTC_AIE_OFF
- アラームがサポートされている RTC に対して、 アラーム割り込みを有効または無効にする。 ioctl(2) の第 3 引き数は無視される。
- RTC_UIE_ON, RTC_UIE_OFF
- 1 秒毎の割り込みがサポートされている RTC に対して、 クロック更新毎の割り込みを有効または無効にする。 ioctl(2) の第 3 引き数は無視される。
- RTC_PIE_ON, RTC_PIE_OFF
- 周期的な割り込みがサポートされている RTC に対して、 周期的な割り込みを有効または無効にする。 ioctl(2) の第 3 引き数は無視される。 特権プロセス (つまり CAP_SYS_RESOURCE ケーパビリティを持つプロセス) のみが、 その時点で /proc/sys/dev/rtc/max-user-freq に周期が上記の値に指定されている場合に、 周期的な割り込みを有効にできる。
- RTC_EPOCH_READ, RTC_EPOCH_SET
- 多くの RTC は年を 8 ビットのレジスタにコード化する。 年は 8 ビットのバイナリ数または BCD 数に変換される。 どちらの場合でも、その数値は RTC の紀元から相対値に変換される。 多くのシステムでは RTC の紀元は 1900 に初期化されるが、 Alpha と MIPS では、RTC レジスタの年の値に応じて、 1952, 1980, 2000 の何れかに初期化される。 これらの操作でそれぞれ RTC の紀元の読み込みと設定が可能な RTC もある。 ioctl(2) の第 3 引き数は、それぞれ unsigned long * と unsigned long である。 返される値 (または指定される値) は紀元である。 RTC の紀元を設定する場合、プロセスは特権 (つまり CAP_SYS_TIME ケーパビリティ) を持たなければならない。
- RTC_WKALM_RD, RTC_WKALM_SET
- RTC の中にはより強力なアラームインタフェースをサポートするものもあり、 これらの ioctl を使うことで、以下のような構造体で RTC のアラーム時刻を (それぞれ) 読み書きできる:
struct rtc_wkalrm { unsigned char enabled; unsigned char pending; struct rtc_time time; };
- enabled フラグはアラーム割り込みを有効または無効したり、 現在の状態を読み込むのに使用される。 これらのフラグを使う場合、 RTC_AIE_ON と RTC_AIE_OFF は使用されない。 pending フラグは RTC_WKALM_RD で使用され、処理待ちの割り込みを表示する (EFI ファームウェアで管理される RTC と通信するとき以外、 Linux ではほとんど役に立たない)。 time フィールドは RTC_ALM_READ や RTC_ALM_SET の場合と同じように使用されるが、 tm_mday, tm_mon, tm_year フィールドも有効であるという点が異なる。 この構造体へのポインタを ioctl(2) の第 3 引き数として渡さなければならない。
ファイル¶
/dev/rtc, /dev/rtc0, /dev/rtc1 など: RTC 特殊キャラクターデバイスファイル注意¶
カーネルのシステムクロックを adjtimex(2) を使って外部参照で同期させる場合、 adjtimex(2) は指定された RTC を 11 分毎に定期的に更新する。 これを行うためカーネルは周期的な割り込みを短期間無効にする必要がある。 これは RTC を使うプログラムに影響を与える。関連項目¶
date(1), adjtimex(2), gettimeofday(2), settimeofday(2), stime(2), time(2), gmtime(3), time(7), hwclock(8), /usr/src/linux/Documentation/rtc.txtこの文書について¶
この man ページは Linux man-pages プロジェクトのリリース 3.41 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2010-02-25 | Linux |