8 #include <botan/internal/hres_timer.h>     9 #include <botan/cpuid.h>    10 #include <botan/time.h>    12 #if defined(BOTAN_TARGET_OS_IS_WINDOWS)    24 #if defined(BOTAN_TARGET_OS_IS_WINDOWS)    27    ::QueryPerformanceCounter(&tv);
    28    accum.
add(tv.QuadPart, 0);
    32 #if defined(BOTAN_TARGET_OS_HAS_CLOCK_GETTIME)    34 #define CLOCK_POLL(src)                     \    37      clock_gettime(src, &ts);               \    38      accum.add(&ts, sizeof(ts), 0);         \    41 #if defined(CLOCK_REALTIME)    42    CLOCK_POLL(CLOCK_REALTIME);
    45 #if defined(CLOCK_MONOTONIC)    46    CLOCK_POLL(CLOCK_MONOTONIC);
    49 #if defined(CLOCK_MONOTONIC_RAW)    50    CLOCK_POLL(CLOCK_MONOTONIC_RAW);
    53 #if defined(CLOCK_PROCESS_CPUTIME_ID)    54    CLOCK_POLL(CLOCK_PROCESS_CPUTIME_ID);
    57 #if defined(CLOCK_THREAD_CPUTIME_ID)    58    CLOCK_POLL(CLOCK_THREAD_CPUTIME_ID);
    65 #if BOTAN_USE_GCC_INLINE_ASM    69 #if defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)    72       u32bit rtc_low = 0, rtc_high = 0;
    73       asm volatile(
"rdtsc" : 
"=d" (rtc_high), 
"=a" (rtc_low));
    74       rtc = (
static_cast<u64bit>(rtc_high) << 32) | rtc_low;
    77 #elif defined(BOTAN_TARGET_CPU_IS_PPC_FAMILY)    78    u32bit rtc_low = 0, rtc_high = 0;
    79    asm volatile(
"mftbu %0; mftb %1" : 
"=r" (rtc_high), 
"=r" (rtc_low));
    80    rtc = (
static_cast<u64bit>(rtc_high) << 32) | rtc_low;
    82 #elif defined(BOTAN_TARGET_ARCH_IS_ALPHA)    83    asm volatile(
"rpcc %0" : 
"=r" (rtc));
    85 #elif defined(BOTAN_TARGET_ARCH_IS_SPARC64) && !defined(BOTAN_TARGET_OS_IS_OPENBSD)    86    asm volatile(
"rd %%tick, %0" : 
"=r" (rtc));
    88 #elif defined(BOTAN_TARGET_ARCH_IS_IA64)    89    asm volatile(
"mov %0=ar.itc" : 
"=r" (rtc));
    91 #elif defined(BOTAN_TARGET_ARCH_IS_S390X)    92    asm volatile(
"stck 0(%0)" : : 
"a" (&rtc) : 
"memory", 
"cc");
    94 #elif defined(BOTAN_TARGET_ARCH_IS_HPPA)    95    asm volatile(
"mfctl 16,%0" : 
"=r" (rtc)); 
 void add(const void *bytes, size_t length, double entropy_bits_per_byte)
unsigned long long u64bit
void poll(Entropy_Accumulator &accum)