/* Test for gethrtime which either issues a classic syscall or leverages fasttrap available on Solaris with tscp hwcap. */ #include "config.h" #include <stdio.h> #include <sys/time.h> #include <sys/trap.h> int main(void) { hrtime_t hrt = gethrtime(); if (hrt > 0) printf("PASS\n"); /* Exercise the fasttrap directly if available. When tscp hwcap is not supported, it simply returns NULL. */ #if defined(SOLARIS_GETHRT_FASTTRAP) #if defined(VGP_x86_solaris) __asm__ ( \ "movl %[FASTTRAP],%%eax\n" "int $0xd2\n" : : [FASTTRAP] "i" (T_GETHRT) : "eax", "edx", "cc"); #elif defined(VGP_amd64_solaris) __asm__ ( \ "movq %[FASTTRAP],%%rax\n" "int $0xd2\n" : : [FASTTRAP] "i" (T_GETHRT) : "rax", "rdx", "cc"); #else # error "Unknown platform" #endif #endif /* SOLARIS_GETHRT_FASTTRAP */ return 0; }