]> Zhao Yanbai Git Server - minix.git/commitdiff
include/time.h: merged
authorLionel Sambuc <lionel@minix3.org>
Tue, 3 Dec 2013 10:51:21 +0000 (11:51 +0100)
committerLionel Sambuc <lionel@minix3.org>
Mon, 3 Mar 2014 19:47:02 +0000 (20:47 +0100)
 - Defining CLOCKS_PER_SEC = 100, instead of 60.
   This define is here for legacy reasons, use sysconf(_SC_CLK_TCK) to
   retrieve the actual number of clock tick per second of the system in
   new code.

 - Moving stime prototype to minix/sysutil.h

Change-Id: I76a73cd53ac2361845f2917f62af4125adfc615d

commands/time/time.c
drivers/vbox/vbox.c
include/minix/sysutil.h
include/time.h
test/t40f.c

index b951312bf3bc4082383c107bf350961898d759a1..3fb975c22050bc3ff5f211617f8a04f412f85d4c 100644 (file)
@@ -36,12 +36,8 @@ char *argv[];
   int cycles = 0;
   struct tms pre_buf, post_buf;
   int status, pid;
-#if _VMD_EXT
-  struct timeval start_time, end_time;
-#else
   struct tms dummy;
   int start_time, end_time;
-#endif
   u64_t start_tsc, end_tsc, spent_tsc;
   clock_t real_time;
   int c;
@@ -66,11 +62,7 @@ char *argv[];
   name = argv[0];
 
   /* Get real time at start of run. */
-#if _VMD_EXT
-  (void) sysutime(UTIME_TIMEOFDAY, &start_time);
-#else
   start_time = times(&dummy);
-#endif
   read_tsc_64(&start_tsc);
 
   /* Fork off child. */
@@ -89,14 +81,8 @@ char *argv[];
   } while (wait(&status) != pid);
   read_tsc_64(&end_tsc);
   spent_tsc = end_tsc - start_tsc;
-#if _VMD_EXT
-  (void) sysutime(UTIME_TIMEOFDAY, &end_time);
-  real_time = (end_time.tv_sec - start_time.tv_sec) * CLOCKS_PER_SEC
-       + (end_time.tv_usec - start_time.tv_usec) * CLOCKS_PER_SEC / 1000000;
-#else
   end_time = times(&dummy);
   real_time = (end_time - start_time);
-#endif
 
   if ((status & 0377) != 0) std_err("Command terminated abnormally.\n");
   times(&post_buf);
index ac199cbd8afe4d8f15e96aea1b1ae3e11a1c2da1..346c96eb11f76f60ac33ac9108c2c30aeeab82b7 100644 (file)
@@ -4,6 +4,7 @@
  * - synchronizing to the host system time;
  * - providing an interface for HGCM communication with the host system.
  */
+#include <minix/sysutil.h>
 #include <minix/drivers.h>
 #include <minix/driver.h>
 #include <minix/optset.h>
index dbf8e09b9daa24f22cb26928f1412c394a8325ad..cc9eeebd1ab77165ff0e26e5f7b8d488dc74abe3 100644 (file)
@@ -73,6 +73,8 @@ void ser_putc(char c);
 void get_randomness(struct k_randomness *, int);
 u32_t sqrt_approx(u32_t);
 
+int stime(time_t *_top);
+
 #define asynsend(ep, msg) asynsend3(ep, msg, 0)
 int asynsend3(endpoint_t ep, message *msg, int flags);
 int asyn_geterror(endpoint_t *dst, message *msg, int *err);
index ddffa52697743833b1b1d95aa03f9ac01865a778..2aa5ce7381fe10045a1a53bdf1fc184c79339bd4 100644 (file)
@@ -70,11 +70,7 @@ typedef      _BSD_TIMER_T_   timer_t;
 #undef _BSD_TIMER_T_
 #endif
 
-#ifdef __minix
-#define CLOCKS_PER_SEC 60
-#else
 #define CLOCKS_PER_SEC 100
-#endif
 
 struct tm {
        int     tm_sec;         /* seconds after the minute [0-61] */
@@ -210,10 +206,6 @@ size_t strftime_z(const timezone_t, char * __restrict, size_t,
 
 #endif /* _NETBSD_SOURCE */
 
-#ifdef __minix
-int stime(time_t *_top);
-#endif /* __minix */
-
 __END_DECLS
 
 #endif /* !_TIME_H_ */
index 6521468b4d2468338147aa8202e0e3119c01aac6..697b94f1cd2e114411c5ee78129733e947e9874b 100644 (file)
 #define DO_TIMEOUT 7
 #define DO_DELTA 0.5
 #define MAX_ERROR 5
-#define DELTA(x,y)  (x.tv_sec - y.tv_sec) * CLOCKS_PER_SEC \
-  + (x.tv_usec - y.tv_usec) * CLOCKS_PER_SEC / 1000000
+#define DELTA(x,y)  (x.tv_sec - y.tv_sec) * system_hz \
+  + (x.tv_usec - y.tv_usec) * system_hz / 1000000
 
 int got_signal = 0;
 int fd_ap[2];
 
+int system_hz;
+
 static void catch_signal(int sig_no) {
   got_signal = 1;
 }
@@ -43,8 +45,8 @@ static float compute_diff(struct timeval start, struct timeval end, float compar
   float diff;
 
   delta = DELTA(end, start); /* delta is in ticks */
-  seconds = (int) (delta / CLOCKS_PER_SEC);
-  hundreths = (int) (delta * 100 / CLOCKS_PER_SEC) - (seconds * 100);
+  seconds = (int) (delta / system_hz);
+  hundreths = (int) (delta * 100 / system_hz) - (seconds * 100);
 
   diff = seconds + (hundreths / 100.0);
   diff -= compare;
@@ -149,6 +151,8 @@ static void do_parent(int child) {
 int main(int argc, char **argv) {
   int forkres;
 
+  /* Retrieve actual system frequency. */
+  system_hz = sysconf(_SC_CLK_TCK);
   /* Get subtest number */
   if(argc != 2) {
     printf("Usage: %s subtest_no\n", argv[0]);