version 1.2, 2013/03/07 16:24:32
|
version 1.3.22.2, 2014/01/14 22:49:39
|
Line 261 time_Parse(const char *csTime)
|
Line 261 time_Parse(const char *csTime)
|
elwix_SetErr(EINVAL, "Invalid date/time format"); |
elwix_SetErr(EINVAL, "Invalid date/time format"); |
return tim; |
return tim; |
} |
} |
|
|
|
/* |
|
* time_rdtsc() - Get TSC timer value from CPU |
|
* |
|
* return: TSC in nanoseconds |
|
*/ |
|
uint64_t |
|
time_rdtsc(void) |
|
{ |
|
#if defined(i386) || defined(__i386__) |
|
/* i386 */ |
|
uint32_t hi, lo; |
|
|
|
asm volatile("rdtsc" : "=d" (hi), "=a" (lo)); |
|
return (((uint64_t) hi << 32) | (uint64_t) lo); |
|
#elif defined(amd64) || defined(__amd64__) || \ |
|
defined(x86_64) || defined(__x86_64__) |
|
/* amd64 */ |
|
uint64_t res; |
|
|
|
asm volatile("rdtsc" : "=a" (res)); |
|
return res; |
|
#else |
|
/* unsupported for this architecture, get time by ordinary way */ |
|
struct timespec ts = { 0, 0LL }; |
|
|
|
clock_gettime(CLOCK_UPTIME_PRECISE, &ts); |
|
return ((uint64_t) ts.tv_sec * 1000000000 + ts.tv_nsec); |
|
#endif |
|
} |