32ビットLinuxプラットフォームで64ビット時代をサポートする方法

32ビットLinuxプラットフォームで64ビット時代をサポートする方法

カーネルバージョン4.1に基づく32ビットARM組み込みLinuxシステムで64ビット時代をサポートする必要があります。

clock_gettime()とclock_settime()を使用して時間を取得または設定しますが、現在は32ビット秒の値に制限されているため、このシステムの問題である2038年の問題が発生します。

少しの調査の後、解決策はカーネルが内部的にstruct timespec64を使用するようにするようです。その後、ユーザースペースはstruct timespecを引き続き使用しますが、対応するtv_secメンバーは64ビットです。

私の質問は、カーネルで64ビット時間仕様を使用するようにこの変更を有効にする方法です。

Jonathan Corbettの記事に基づいています2038年のシステムコールの切り替え、これを達成するための最初のステップは、CONFIG_COMPAT_TIMEシンボルを設定することです。しかし、カーネルのソースコードでそのシンボルを見つけましたが、どこにも現れません。現時点では、64ビットタイムスペックサポートがまだ部分的にのみ実装されているのか、それともこの記事が作成されてから実装の方向が変わったのか疑問に思います。

ベストアンサー1

おすすめ記事