stats: incorrect clock square algorithm
[openafs.git] / src / rx / rx_clock.h
index 648d571..a836fab 100644 (file)
@@ -94,21 +94,14 @@ extern void clock_UpdateTime(void);
 #endif /* AFS_USE_GETTIMEOFDAY || AFS_PTHREAD_ENV */
 #else /* KERNEL */
 #define clock_Init()
-#if defined(AFS_SGI61_ENV) || defined(AFS_HPUX_ENV) || defined(AFS_LINUX_64BIT_KERNEL)
-#define clock_GetTime(cv) osi_GetTime((osi_timeval_t *)cv)
-#else
-#if (defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL)) || (defined(AFS_DARWIN100_ENV) && defined(__amd64__)) || defined(AFS_NBSD_ENV)
-#define        clock_GetTime(cv)                               \
-    BEGIN                                              \
-       struct timeval tv;                              \
-       osi_GetTime(&tv);                        \
-       (cv)->sec = (afs_int32)tv.tv_sec;               \
-       (cv)->usec = (afs_int32)tv.tv_usec;             \
-    END
-#else /* defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL) */
-#define clock_GetTime(cv) osi_GetTime((osi_timeval_t *)(cv))
-#endif /* defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL) */
-#endif
+static_inline void
+clock_GetTime(struct clock *cv)
+{
+    osi_timeval32_t now;
+    osi_GetTime(&now);
+    cv->sec = now.tv_sec;
+    cv->usec = now.tv_usec;
+}
 #define clock_Sec() osi_Time()
 #define        clock_NewTime()         /* don't do anything; clock is fast enough in kernel */
 #endif /* KERNEL */
@@ -190,7 +183,7 @@ extern void clock_UpdateTime(void);
                      + 2 * ((c2)->usec / 1000) * ((c2)->usec % 1000) / 1000   \
                      + ((((c2)->usec % 1000) > 707) ? 1 : 0);                 \
      }                                                                        \
-   if ((c1)->usec > 1000000) {                                                \
+   while ((c1)->usec > 1000000) {                                             \
         (c1)->usec -= 1000000;                                                \
         (c1)->sec++;                                                          \
    }                                                                          \