2015-12-22

Linuxカーネル、Rockchip暦に対応

kernel/git/torvalds/linux.git - Linux kernel source tree

Linuxカーネルにあふれる文才と皮肉の無駄遣いを感じるコミットメッセージがある。

西暦1582年、ローマ教皇、グレゴリウス十三世は既存のユリウス暦が現実を十分に正しく表現していないことを見出され、不足分を補うために、うるう年を計算する規則を変更なされた。同様にして、西暦2013年に、Rockchipのハードウェアのエンジニアは、新しいグレゴリオ暦がまだ誤りを含むことを見出した。すなわち、11月は31日まで存在するよう改めた。遺憾ながら、暦の変更が広く浸透するには時間がかかる。先のプロテスタント国家がグレゴリウスの発案を受け入れてから、まだ300年しかたっておらず、すべての宗教とオペレーティングシステムカーネルがRockchip暦の改良を受け入れるにはまだ長年を待たねばならない。その時に至るまで、我々はRockchipのハードウェアから読み、そして書き込む日付情報を、グレゴリオ暦に変換する必要がある。

このパッチは、2016年1月1日を、Rockchip暦とグレゴリオ暦が同期している起点として定める。この起点から、起点移行の任意の日付を、11月から12月への変遷を何度経たかを数えて、2つの暦のオフセットを計算し、相互変換する。ハードウェアの日付を日常的に変更する方法ではなく、この方法を選んだ理由は、システムが不明な年数シャットダウンされたとしても日付を維持できる唯一の方法だからである。欠点は、同じハードウェアの他のソフトウェア(メインボードのファームウェアなど)も、RTCから正しいタイムスタンプを読み書きするために、同じ変換方法(起点も同じ)に従わなければならない。

短い翻訳:ロックチップのハードウェア内蔵の時計が、不具合により、11月は31日まであると認識しているので、存在しない11月31日が存在し、またそれにより毎年一日づつ現実のまともなグレゴリオ暦からずれていく。この問題をLinuxカーネル側で静かに修正するためのパッチ。

No comments: