rtems: Constify rtems_task_wake_when()

Add a parameter to _TOD_Validate() to disable the validation of the
ticks member.

There are two reasons for this change.  Firstly, in
rtems_task_wake_when() was a double check for time_buffer == NULL (one
in rtems_task_wake_when() and one in _TOD_Validate()).  Secondly, the
ticks member is ignored by rtems_task_wake_when().  This was done with a
write of zero to the ticks member and thus a modification of the
user-provided structure.  Now the structure is no longer modified.
Using a mask parameter is quite efficient. You just have to load an
immediate value and there are no additional branches in _TOD_Validate().

Close #4406.
This commit is contained in:
Sebastian Huber
2021-05-11 17:27:20 +02:00
parent 6136918ddf
commit 523867de9d
9 changed files with 32 additions and 20 deletions

View File

@@ -255,7 +255,7 @@ int setRealTime(
if (!RTC_Is_present())
return -1;
if (_TOD_Validate(tod) != RTEMS_SUCCESSFUL)
if (_TOD_Validate(tod, TOD_ENABLE_TICKS_VALIDATION) != RTEMS_SUCCESSFUL)
return -1;
RTC_Table[RTC_Minor].pDeviceFns->deviceSetTime(RTC_Minor, tod);