diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-10-06 15:41:46 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-10-09 08:30:07 +0200 |
commit | 65012bfebbc03088f0740b086abb26d2ff6ebd8b (patch) | |
tree | 8d69e59128a0e9ee8ad111485f2594aa914c3285 /cpukit/score/src/kern_tc.c | |
parent | score: Use struct timespec for TOD (diff) | |
download | rtems-65012bfebbc03088f0740b086abb26d2ff6ebd8b.tar.bz2 |
score: Change Timestamp_Control to sbintime_t
The timestamp are based on the uptime. There is no need for a 64-bit
seconds part. The signed 32-bit seconds part of the sbintime_t limits
the uptime to roughly 68 years.
Close #2740.
Diffstat (limited to 'cpukit/score/src/kern_tc.c')
-rw-r--r-- | cpukit/score/src/kern_tc.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/cpukit/score/src/kern_tc.c b/cpukit/score/src/kern_tc.c index f385e6d946..242983b464 100644 --- a/cpukit/score/src/kern_tc.c +++ b/cpukit/score/src/kern_tc.c @@ -66,6 +66,7 @@ __FBSDID("$FreeBSD r284178 2015-06-09T11:49:56Z$"); #endif /* __rtems__ */ #ifdef __rtems__ #include <limits.h> +#include <string.h> #include <rtems.h> ISR_LOCK_DEFINE(, _Timecounter_Lock, "Timecounter") #define _Timecounter_Release(lock_context) \ @@ -469,6 +470,24 @@ binuptime(struct bintime *bt) bintime_addx(bt, th->th_scale * tc_delta(th)); } while (gen == 0 || gen != tc_getgen(th)); } +#ifdef __rtems__ +sbintime_t +_Timecounter_Sbinuptime(void) +{ + struct timehands *th; + uint32_t gen; + sbintime_t sbt; + + do { + th = timehands; + gen = tc_getgen(th); + sbt = bttosbt(th->th_offset); + sbt += (th->th_scale * tc_delta(th)) >> 32; + } while (gen == 0 || gen != tc_getgen(th)); + + return (sbt); +} +#endif /* __rtems__ */ void nanouptime(struct timespec *tsp) |