Changeset 7bbbe42 in rtems for cpukit/rtems/src

Timestamp:
04/08/21 13:41:15 (3 years ago)
Author:
Frank Kühndel <frank.kuehndel@…>
Branches:
master
Children:
97ba94b
Parents:
2a24f99d
git-author:
Frank Kühndel <frank.kuehndel@…> (04/08/21 13:41:15)
git-committer:
Sebastian Huber <sebastian.huber@…> (04/21/21 05:13:31)
Message:

clock:_TOD_To_seconds(): Fix year 2514 overflow

This patch fixes issue #4338 by changing _TOD_Validate()
to only accept years till 2105. This requires another patch
to change the documentation of rtems_clock_set() and other
affected API functions (indicating the end date is 2105 not 2514).

I tried to support till year 2514 but it turned out that
this needs changing the Timer Manager too. That in turn
would mean to change _TOD_Seconds_since_epoch( void )
from 32 to 64 bit. Sebastian pointed out that a naive extension
leads to trouble with 32 bit processors. He deemed a safe
re-implementation too costly performance wise considering
that year 2106 is far away and current binaries using RTEMS
Classic API are unlikely to be in use by 2106.

The constant TOD_SECONDS_AT_2100_03_01_00_00 in
cpukit/rtems/src/clocktodtoseconds.c happens to be wrong by
1 hour. When setting the date 2100-Feb-28 23:59:59 and then
reading the date again you will find yourself in 2100-Feb-27.

Update #4338

(No files)

Note: See TracChangeset for help on using the changeset viewer.