diff options
Diffstat (limited to 'linux/timer-lx.c')
-rw-r--r-- | linux/timer-lx.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/linux/timer-lx.c b/linux/timer-lx.c new file mode 100644 index 0000000000..0460aaa024 --- /dev/null +++ b/linux/timer-lx.c @@ -0,0 +1,49 @@ +// Precise timer routines for LINUX (C) LGB & A'rpi/ASTRAL + +#include <unistd.h> +#include <sys/time.h> + +// Returns current time in seconds +unsigned int GetTimer(){ + struct timeval tv; + struct timezone tz; +// float s; + gettimeofday(&tv,&tz); +// s=tv.tv_usec;s*=0.000001;s+=tv.tv_sec; + return (tv.tv_sec*1000000+tv.tv_usec); +} + +// Returns current time in microseconds +int uGetTimer(){ + struct timeval tv; + struct timezone tz; + gettimeofday(&tv,&tz); + return (int)(tv.tv_usec+1000000*tv.tv_sec); +} + +static unsigned int RelativeTime=0; + +// Returns time spent between now and last call in seconds +float GetRelativeTime(){ +unsigned int t,r; + t=GetTimer(); +// t*=16;printf("time=%ud\n",t); + r=t-RelativeTime; + RelativeTime=t; + return (float)r * 0.000001F; +} + +// Initialize timer, must be called at least once at start +void InitTimer(){ + GetRelativeTime(); +} + + +#if 0 +void main(){ + float t=0; + InitTimer(); + while(1){ t+=GetRelativeTime();printf("time= %10.6f\r",t);fflush(stdout); } +} +#endif + |