diff osdep/timer-lx.c @ 9380:edfe34c5405d

linux->osdep
author arpi
date Sun, 09 Feb 2003 20:18:23 +0000
parents linux/timer-lx.c@f297030ef5ab
children f9755d9c479a
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/osdep/timer-lx.c	Sun Feb 09 20:18:23 2003 +0000
@@ -0,0 +1,67 @@
+// Precise timer routines for LINUX  (C) LGB & A'rpi/ASTRAL
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <time.h>
+#include <sys/time.h>
+#include "../config.h"
+
+int usec_sleep(int usec_delay)
+{
+#ifdef HAVE_NANOSLEEP
+    struct timespec ts;
+    ts.tv_sec  =  usec_delay / 1000000;
+    ts.tv_nsec = (usec_delay % 1000000) * 1000;
+    return nanosleep(&ts, NULL);
+#else
+    return usleep(usec_delay);
+#endif
+}
+
+
+// Returns current time in microseconds
+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 milliseconds
+unsigned int GetTimerMS(){
+  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*1000+tv.tv_usec/1000);
+}  
+
+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
+