Официальный форум СВД Встраиваемые Системы
19 Апрель, 2024, 11:43:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: time_t и "конец времени"  (Прочитано 1290 раз)
oleg
Пользователь

Сообщений: 23


« : 12 Март, 2019, 09:46:04 »

Добрый день!

Заказчик прописал срок службы объекта в 30 лет! Shocked На объекте используется QNX4.

Можно ли гарантировать такой срок работы ОС QNX4 с учетом того, что в январе 2038 года время, представляемое в нынешнем формате time_t, выйдет за максимально возможное значение, со всеми вытекающими последствиями?

Пожалуйста сообщите, рассматривалось ли такое событие? Любая информация об этом будет в тему.

Спасибо!
Записан
Олег Большаков
Легенда

Сообщений: 3140



« Ответ #1 : 12 Март, 2019, 18:05:17 »

Здравствуйте!

В QNX 4.25 в начале 2038 года произойдет переполнение данных в структурах, хранящих системное время. Проведенные нами эксперименты показывают, что базовые системные сервисы ОС продолжат функционировать. Вы также можете смоделировать эту ситуацию и проверить поведение ПО вашей системы.

В QNX 6 ядерное системное время будет корректно работать до 2554 года. Для обычных программ, использующих time_t, переполнение произойдет в 2106 году (7 февраля 2106 06:28:14 UTC).
Записан
oleg
Пользователь

Сообщений: 23


« Ответ #2 : 13 Март, 2019, 12:21:18 »


В QNX 4.25 в начале 2038 года произойдет переполнение данных в структурах, хранящих системное время. Проведенные нами эксперименты показывают, что базовые системные сервисы ОС продолжат функционировать. Вы также можете смоделировать эту ситуацию и проверить поведение ПО вашей системы.


Спасибо за обнадеживающую информацию!!!

Провел простые тесты:

$ date -s 0x7fffffff
Tue Jan 19 06:14:07 msk 2038
$ date -s 0x80000000
date: bad seconds value '0x80000000'
$date -s 2147483648
date: bad seconds value '2147483648'
$date -s -2147483648
Tue Jan 19 06:14:08 msk 2038

Фактически в ведении времени используются все 4 байта, но после 2147483647 (0x7fffffff) секунд следует писать/вводить/подразумевать число секунд с минусом, например -2147483648 (0x80000000) Cool Прикольно, но не смертельно Wink

Немного протестировал поведение функций С (и утилиты ОС, например date), где используется время в формате time_t (== signed long), например time, mktime, ctime, времена файловой системы прекрасно работают, если использовать ОТРИЦАТЕЛЬНОЕ время.
За исключением функции difftime, где аргументы лучше явно приводить к типу (unsigned long), дабы избежать "скачков" при переходе времени с "+" на "-".

Можно еще добавить, что в QNX4 значения времени меньше нуля прекрасно воспринимаются вплоть до -1 UTC (как и в указанном для ОС QNX6 7 февраля 2106 06:28:14 UTC).

М.б. Вы в курсе, планируется ли "расширить" диапазон положительного представления времени в time_t ? Т.е. прописать в хедерах, что time_t == unsigned long, с соответствующими изменениями кодов и утилит...
« Последнее редактирование: 13 Март, 2019, 13:23:24 от oleg » Записан
Олег Большаков
Легенда

Сообщений: 3140



« Ответ #3 : 13 Март, 2019, 13:18:06 »

М.б. Вы в курсе, планируется ли "расширить" диапазон положительного представления времени в time_t ? Т.е. прописать в хедерах, что time_t == unsigned long, с соответствующими изменениями кодов и утилит...

На данный момент такая доработка не планировалась. Но поскольку Вы не первый, кто обращается к нам с этим вопросом, и как я подозреваю, не последний (я даже думаю, что будут спрашивать чаще), то мы рассмотрим возможность и целесообразность такой доработки. По различным причинам эта доработка не такая простая, как может показаться на первый взгляд.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2024 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 19 Февраль, 2024, 07:31:00