【发布时间】:2016-05-03 03:27:03
【问题描述】:
在 32 位嵌入式 Linux (ARMLinux) 的 C 代码中处理时间的正确方法是什么,以确保代码在 2038 年 1 月 19 日 UTC 03:14:07 之后继续正常工作(当签名的 32 位time_t 溢出)?鉴于 time_t 在我必须使用的系统上是 32 位签名的,有哪些替代方案?
大量的谷歌搜索没有发现任何实际用途。似乎每个人都认为到那时我们都将使用 64 位操作系统,但这显然不适用于嵌入式系统。
在我需要使用的系统上,__kernel_time_t 被定义为long。这大概意味着 64 位时间没有内核设施。 uClibc的版本是0.9.29。
我不敢相信我是唯一一个遇到这个问题的人,而且我不想重新发明轮子。
【问题讨论】:
-
虽然我同意这是一个好问题,但对于 SO 来说可能过于宽泛。您是否搜索过 LKML 或发布过请求?
-
@Olaf:我已经阅读了 Linux 内核作者正在做的事情,但这些都是围绕 64 位系统展开的。我不认为这个问题太宽泛。坦率地说,我怀疑是否有这么多不同的方法可以做到这一点,答案很可能是“目前没有针对嵌入式系统的通用解决方案。”
-
@n.m.在嵌入式世界中,20 年一点也不长。我使用的其中一个系统已经超过 35 年了。
-
@n.m.:令人惊讶的是,有些应用领域每年都不会发布新设备。对于家用电器,请考虑例如洗衣机(当然不是便宜的)等等。
-
您好,从 2021 年开始! Linux 5.6 及更高版本已准备好在 2038 年之前在 32 位系统上运行:lkml.org/lkml/2020/1/29/355?anz=web
标签: c embedded-linux 32-bit uclibc year2038