2010-12-14 4 views
1

私は2038年問題(Unix Millennium Bug)を見直しました。UnixミレニアムのバグやY2k38の問題を解決するための指針はありますか?

私はarticle about this on Wikipediaを読んでいます。ここでこの問題の解決策を読んでいます。

time_tのデータ型を符号なし32ビット整数に変更して、2106年まで有効にしたいと思っています。Linuxカーネル2.6.23にPowerPCのRTPatchを使用しています。

time_tのデータ型をPowerPCの符号なし32ビット整数に変更できるパッチはありますか?またはこのバグを解決するためのパッチがありますか?

+3

more serverfaultの質問? – Robert

+0

ポインター... ha、ha。 :P –

+1

*サーバーの問題ではありません。 – Brad

答えて

1

time_t実際にはlibcの実装で定義されており、カーネル自体では定義されていません。

カーネルは、システムコールの形式で現在の時刻を提供するさまざまなメカニズムを提供しています。これらのメカニズムの多くは、既に32ビット以上の精度をサポートしています。問題は実際にはlibcの実装(ほとんどのデスクトップLinuxディストリビューションではglibc)です。これは、カーネルから時間をフェッチした後、32ビット符号付き整数データ型の形式でアプリケーションに返します。

1は、理論的には実際にはかなり複雑になり、あなたのlibc実装でtime_tの定義を変更することができますが:このような変更はlibcのABIを変更するだろう、今度はlibcを使用して、すべてのアプリケーションはまた、ソースから再コンパイルすることを要求します。

最も簡単な解決策は、システムを64ビットのディストリビューションにアップグレードすることです。ここでは、time_tがすでに64ビットのデータ型に定義されているため、問題は完全に回避されます。

+1

それでは、組み込みLinuxのソリューションは何ですか? * 2038年以降もまだ使用されている32ビットシステム?または私は幸運の外ですか? –

関連する問題