如何在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 位时间规范?

根据乔纳森·科贝特的文章2038年的系统调用转换,实现此目标的第一步涉及设置 CONFIG_COMPAT_TIME 符号,但我已经在内核源代码中查找了该符号,但它没有出现在任何地方。此时,我想知道 64 位 timespec 支持是否仍仅部分实现,或者自该文章撰写以来其实现是否已改变方向。

相关内容