version 1.2, 2013/03/07 16:24:32
|
version 1.5, 2015/06/25 17:53:50
|
Line 12 terms:
|
Line 12 terms:
|
All of the documentation and software included in the ELWIX and AITNET |
All of the documentation and software included in the ELWIX and AITNET |
Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org> |
Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org> |
|
|
Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 | Copyright 2004 - 2015 |
by Michael Pounov <misho@elwix.org>. All rights reserved. |
by Michael Pounov <misho@elwix.org>. All rights reserved. |
|
|
Redistribution and use in source and binary forms, with or without |
Redistribution and use in source and binary forms, with or without |
Line 260 time_Parse(const char *csTime)
|
Line 260 time_Parse(const char *csTime)
|
if ((tim = timegm(&tm)) == (time_t) -1) |
if ((tim = timegm(&tm)) == (time_t) -1) |
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 |
} |
} |