mirror of
https://github.com/zeromq/libzmq.git
synced 2024-12-31 01:43:02 +08:00
Problem: use of C-style casts and magic literals
Solution: replace by static_cast, and introduce appropriate constants
This commit is contained in:
parent
089746959d
commit
6ef67f13e3
@ -122,12 +122,16 @@ static f_compatible_get_tick_count64 my_get_tick_count64 =
|
|||||||
init_compatible_get_tick_count64 ();
|
init_compatible_get_tick_count64 ();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const uint64_t usecs_per_msec = 1000;
|
||||||
|
const uint64_t usecs_per_sec = 1000000;
|
||||||
|
const uint64_t nsecs_per_usec = 1000;
|
||||||
|
|
||||||
zmq::clock_t::clock_t () :
|
zmq::clock_t::clock_t () :
|
||||||
last_tsc (rdtsc ()),
|
last_tsc (rdtsc ()),
|
||||||
#ifdef ZMQ_HAVE_WINDOWS
|
#ifdef ZMQ_HAVE_WINDOWS
|
||||||
last_time (static_cast<uint64_t> ((*my_get_tick_count64) ()))
|
last_time (static_cast<uint64_t> ((*my_get_tick_count64) ()))
|
||||||
#else
|
#else
|
||||||
last_time (now_us () / 1000)
|
last_time (now_us () / usecs_per_msec)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -150,7 +154,8 @@ uint64_t zmq::clock_t::now_us ()
|
|||||||
|
|
||||||
// Convert the tick number into the number of seconds
|
// Convert the tick number into the number of seconds
|
||||||
// since the system was started.
|
// since the system was started.
|
||||||
double ticks_div = ticks_per_second.QuadPart / 1000000.0;
|
const double ticks_div =
|
||||||
|
static_cast<double> (ticks_per_second.QuadPart) / usecs_per_sec;
|
||||||
return static_cast<uint64_t> (tick.QuadPart / ticks_div);
|
return static_cast<uint64_t> (tick.QuadPart / ticks_div);
|
||||||
|
|
||||||
#elif defined HAVE_CLOCK_GETTIME \
|
#elif defined HAVE_CLOCK_GETTIME \
|
||||||
@ -174,14 +179,14 @@ uint64_t zmq::clock_t::now_us ()
|
|||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
int rc = gettimeofday (&tv, NULL);
|
int rc = gettimeofday (&tv, NULL);
|
||||||
errno_assert (rc == 0);
|
errno_assert (rc == 0);
|
||||||
return (tv.tv_sec * (uint64_t) 1000000 + tv.tv_usec);
|
return tv.tv_sec * usecs_per_sec + tv.tv_usec;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
return (tv.tv_sec * (uint64_t) 1000000 + tv.tv_nsec / 1000);
|
return tv.tv_sec * usecs_per_sec + tv.tv_nsec / nsecs_per_usec;
|
||||||
|
|
||||||
#elif defined HAVE_GETHRTIME
|
#elif defined HAVE_GETHRTIME
|
||||||
|
|
||||||
return (gethrtime () / 1000);
|
return gethrtime () / nsecs_per_usec;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
@ -189,7 +194,7 @@ uint64_t zmq::clock_t::now_us ()
|
|||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
int rc = gettimeofday (&tv, NULL);
|
int rc = gettimeofday (&tv, NULL);
|
||||||
errno_assert (rc == 0);
|
errno_assert (rc == 0);
|
||||||
return (tv.tv_sec * (uint64_t) 1000000 + tv.tv_usec);
|
return tv.tv_sec * usecs_per_sec + tv.tv_usec;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -207,7 +212,7 @@ uint64_t zmq::clock_t::now_ms ()
|
|||||||
// to its 32 bit limitation.
|
// to its 32 bit limitation.
|
||||||
return static_cast<uint64_t> ((*my_get_tick_count64) ());
|
return static_cast<uint64_t> ((*my_get_tick_count64) ());
|
||||||
#else
|
#else
|
||||||
return now_us () / 1000;
|
return now_us () / usecs_per_msec;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -221,7 +226,7 @@ uint64_t zmq::clock_t::now_ms ()
|
|||||||
#ifdef ZMQ_HAVE_WINDOWS
|
#ifdef ZMQ_HAVE_WINDOWS
|
||||||
last_time = static_cast<uint64_t> ((*my_get_tick_count64) ());
|
last_time = static_cast<uint64_t> ((*my_get_tick_count64) ());
|
||||||
#else
|
#else
|
||||||
last_time = now_us () / 1000;
|
last_time = now_us () / usecs_per_msec;
|
||||||
#endif
|
#endif
|
||||||
return last_time;
|
return last_time;
|
||||||
}
|
}
|
||||||
@ -233,7 +238,7 @@ uint64_t zmq::clock_t::rdtsc ()
|
|||||||
#elif (defined __GNUC__ && (defined __i386__ || defined __x86_64__))
|
#elif (defined __GNUC__ && (defined __i386__ || defined __x86_64__))
|
||||||
uint32_t low, high;
|
uint32_t low, high;
|
||||||
__asm__ volatile("rdtsc" : "=a"(low), "=d"(high));
|
__asm__ volatile("rdtsc" : "=a"(low), "=d"(high));
|
||||||
return (uint64_t) high << 32 | low;
|
return static_cast<uint64_t> (high) << 32 | low;
|
||||||
#elif (defined __SUNPRO_CC && (__SUNPRO_CC >= 0x5100) \
|
#elif (defined __SUNPRO_CC && (__SUNPRO_CC >= 0x5100) \
|
||||||
&& (defined __i386 || defined __amd64 || defined __x86_64))
|
&& (defined __i386 || defined __amd64 || defined __x86_64))
|
||||||
union
|
union
|
||||||
@ -246,7 +251,7 @@ uint64_t zmq::clock_t::rdtsc ()
|
|||||||
#elif defined(__s390__)
|
#elif defined(__s390__)
|
||||||
uint64_t tsc;
|
uint64_t tsc;
|
||||||
asm("\tstck\t%0\n" : "=Q"(tsc) : : "cc");
|
asm("\tstck\t%0\n" : "=Q"(tsc) : : "cc");
|
||||||
return (tsc);
|
return tsc;
|
||||||
#else
|
#else
|
||||||
struct timespec ts;
|
struct timespec ts;
|
||||||
#if defined ZMQ_HAVE_OSX \
|
#if defined ZMQ_HAVE_OSX \
|
||||||
@ -255,6 +260,7 @@ uint64_t zmq::clock_t::rdtsc ()
|
|||||||
#else
|
#else
|
||||||
clock_gettime (CLOCK_MONOTONIC, &ts);
|
clock_gettime (CLOCK_MONOTONIC, &ts);
|
||||||
#endif
|
#endif
|
||||||
return (uint64_t) (ts.tv_sec) * 1000000000 + ts.tv_nsec;
|
return static_cast<uint64_t> (ts.tv_sec) * nsecs_per_usec * usecs_per_sec
|
||||||
|
+ ts.tv_nsec;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user