Cách thích hợp để xử lý thời gian trong mã C cho 32-bit nhúng Linux (ARMLinux) là gì để đảm bảo rằng mã tiếp tục hoạt động đúng sau 03:14:07 UTC ngày 19 tháng 1 năm 2038 (khi một32 bit đã ký) tràn)? Cho rằng time_t
được ký 32 bit trên hệ thống tôi phải sử dụng, các lựa chọn thay thế là gì?Giải pháp năm 2038 cho Linux nhúng (32 bit)?
Một lượng đáng kể googling đã phát hiện ra không có gì sử dụng thực tế. Mọi người dường như cho rằng tất cả chúng ta sẽ sử dụng hệ điều hành 64 bit, nhưng điều này không đúng với các hệ thống nhúng.
Trên hệ thống, tôi được yêu cầu sử dụng, __kernel_time_t
được định nghĩa là long
. Có lẽ có nghĩa là không có cơ sở hạt nhân cho thời gian 64 bit. Phiên bản của uClibc là 0.9.29.
Tôi không thể tin mình là người duy nhất có vấn đề này và tôi không muốn phát minh lại bánh xe.
Mặc dù tôi đồng ý đây là một câu hỏi hay nhưng nó có thể quá rộng đối với SO. Bạn đã tìm kiếm LKML hoặc đăng một yêu cầu chưa? – Olaf
@Olaf: Tôi đã đọc về những gì các tác giả hạt nhân Linux đang làm, nhưng tất cả đều xoay quanh các hệ thống 64 bit. Tôi không nghĩ câu hỏi này quá rộng; thẳng thắn, tôi nghi ngờ rằng có nhiều cách khác nhau để làm điều đó anyway, và câu trả lời có thể hoàn toàn có thể là "Chỉ đơn giản là không có giải pháp phổ quát hiện nay cho các hệ thống nhúng." –
Đã hơn 20 năm kể từ bây giờ –