--- multiplexer/global.c 2001/03/29 13:27:43 1.2 +++ multiplexer/global.c 2001/04/03 21:14:33 1.3 @@ -14,7 +14,7 @@ boolean timed_io; boolean accept_weird_scr; -int global_delta; +t_msec global_delta; #ifdef DEBUG_TIMEPOLL timepoll logtp [max_timepoll]; @@ -22,8 +22,9 @@ long logtpc; timepoll *ltp; #endif -int msec_now (void) +t_msec msec_now (void) { +#define MSEC_EXPONENT 21 static long last; static int local_delta; struct timeval tv; @@ -33,11 +34,12 @@ int msec_now (void) ltp->tv.tv_sec = tv.tv_sec; ltp->tv.tv_usec = tv.tv_usec; #endif - if ((tv.tv_sec & (~0x001FFFFFL)) != last) { - last = tv.tv_sec & (~0x001FFFFFL); - local_delta += 1000 * 0x00200000L; + if ((tv.tv_sec & (~((1L << MSEC_EXPONENT) - 1))) != last) { + last = tv.tv_sec & (~((1L << MSEC_EXPONENT) - 1)); + local_delta += 1000 * (1L << MSEC_EXPONENT); } - now = (tv.tv_sec & 0x001FFFFFL) * 1000 + tv.tv_usec / 1000 + local_delta; + now = (tv.tv_sec & ((1L << MSEC_EXPONENT) - 1)) * 1000 + + tv.tv_usec / 1000 + local_delta; warn (LDEB,"msec_now",EGLO,3,0,now); #ifdef DEBUG_TIMEPOLL ltp->cnt_msecnow += 1; @@ -48,16 +50,18 @@ int msec_now (void) void cref2msec (conversion_base *b, clockref c, - int *m) + t_msec *m) { #define CREF2MSEC_LIMIT (90 * 1024 * 16) /* 16 sec */ unsigned long d; d = c.base - b->base; if (d >= (2 * CREF2MSEC_LIMIT)) { if (d >= (3 * CREF2MSEC_LIMIT)) { + warn (LDEB,"cref2msec",EGLO,4,1,d); b->base = c.base - CREF2MSEC_LIMIT; b->msec = b->base / 90; } else { + warn (LDEB,"cref2msec",EGLO,4,2,d); b->base += CREF2MSEC_LIMIT; b->msec += CREF2MSEC_LIMIT / 90; } @@ -67,7 +71,7 @@ void cref2msec (conversion_base *b, } void msec2cref (conversion_base *b, - int m, + t_msec m, clockref *c) { #define MSEC2CREF_LIMIT (1024 * 10) /* 10 sec */ @@ -75,9 +79,11 @@ void msec2cref (conversion_base *b, d = m - b->msec; if (d >= (2 * MSEC2CREF_LIMIT)) { if (d >= (3 * MSEC2CREF_LIMIT)) { + warn (LDEB,"msec2cref",EGLO,5,1,d); b->msec = m - MSEC2CREF_LIMIT; b->base = b->msec * 45; } else { + warn (LDEB,"msec2cref",EGLO,5,2,d); b->msec += MSEC2CREF_LIMIT; b->base += MSEC2CREF_LIMIT * 45; }