Browse Source
read the timestamp counter. closes #1012
read the timestamp counter. closes #1012
git-svn-id: file:///svn/tokudb@5018 c7de825b-a66e-492c-adef-691d508d4ae1pull/56/head
2 changed files with 56 additions and 0 deletions
@ -0,0 +1,34 @@ |
|||
// read the processor time stamp register |
|||
|
|||
#if defined __i386__ |
|||
|
|||
#define USE_RDTSC 1 |
|||
|
|||
static inline unsigned long long rdtsc() { |
|||
unsigned long hi, lo; |
|||
__asm__ __volatile__ ("rdtsc\n" |
|||
"movl %%edx,%0\n" |
|||
"movl %%eax,%1" : "=r"(hi), "=r"(lo) : : "edx", "eax"); |
|||
return ((unsigned long long) hi << 32ULL) + (unsigned long long) lo; |
|||
} |
|||
|
|||
#else |
|||
#if defined __x86_64__ |
|||
|
|||
#define USE_RDTSC 1 |
|||
|
|||
static inline unsigned long long rdtsc() { |
|||
unsigned long long r; |
|||
__asm__ __volatile__ ("rdtsc\n" |
|||
"shl $32,%%rdx\n" |
|||
"or %%rdx,%%rax\n" |
|||
"movq %%rax,%0" : "=r"(r) : : "edx", "eax", "rdx", "rax"); |
|||
return r; |
|||
} |
|||
|
|||
#else |
|||
|
|||
#define USE_RDTSC 0 |
|||
|
|||
#endif |
|||
#endif |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue