diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2000-07-07 19:31:28 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2000-07-07 19:31:28 +0000 |
commit | 6d19b7edd4bae24ddcd6ca4acbe210b1cca2f2c3 (patch) | |
tree | 8099f877fd20a89e1476dd40bcb1a662786db283 /c | |
parent | Patch from James Housley <jim@thehousleys.net> so application Makefiles (diff) | |
download | rtems-6d19b7edd4bae24ddcd6ca4acbe210b1cca2f2c3.tar.bz2 |
Fixed problem reported by Victor V. Vengerov <Victor.Vengerov@oktet.ru>
where alarm() did not correctly account for the watchdog start_time
and stop_time fields being based on ticks not seconds. This resulted
in alarm() returning a bogus number of seconds remaining.
Diffstat (limited to 'c')
-rw-r--r-- | c/src/exec/posix/src/alarm.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/c/src/exec/posix/src/alarm.c b/c/src/exec/posix/src/alarm.c index bef81d6695..10be929d25 100644 --- a/c/src/exec/posix/src/alarm.c +++ b/c/src/exec/posix/src/alarm.c @@ -35,8 +35,14 @@ unsigned int alarm( case WATCHDOG_ACTIVE: case WATCHDOG_REMOVE_IT: + /* + * The stop_time and start_time fields are snapshots of ticks since + * boot. Since alarm() is dealing in seconds, we must account for + * this. + */ + remaining = the_timer->initial - - (the_timer->stop_time - the_timer->start_time); + ((the_timer->stop_time - the_timer->start_time) / _TOD_Ticks_per_second); break; } |