int win_gettimeofday(win_time_val_t *tv) { SYSTEMTIME st; FILETIME ft; LARGE_INTEGER li; static char get_base_time_flag = 0; if (get_base_time_flag == 0) { get_base_time(&base_time); } /* Standard Win32 GetLocalTime */ GetLocalTime(&st); SystemTimeToFileTime(&st, &ft); li.LowPart = ft.dwLowDateTime; li.HighPart = ft.dwHighDateTime; li.QuadPart /= SECS_TO_FT_MULT; li.QuadPart -= base_time.QuadPart; tv->tv_sec = li.LowPart; tv->tv_usec = st.wMilliseconds; return 0; }
pj_status_t pj_gettimeofday(pj_time_val *tv) { #ifdef WINCE_TIME pj_timestamp tick; pj_uint64_t msec_elapsed; #else SYSTEMTIME st; FILETIME ft; LARGE_INTEGER li; #endif pj_status_t status; if (base_time.QuadPart == 0) { status = get_base_time(); if (status != PJ_SUCCESS) return status; } #ifdef WINCE_TIME do { status = pj_get_timestamp(&tick); if (status != PJ_SUCCESS) return status; if (tick.u64 - g_last_update.u64 >= g_update_period) { pj_enter_critical_section(); if (tick.u64 - g_last_update.u64 >= g_update_period) { g_last_update.u64 = tick.u64; check_system_time(tick.u64 - g_start_tick.u64); } pj_leave_critical_section(); } else { break; } } while (1); msec_elapsed = pj_elapsed_msec64(&g_start_tick, &tick); tv->sec = (long)(g_start_time.QuadPart + msec_elapsed/1000); tv->msec = (long)(msec_elapsed % 1000); #else /* Standard Win32 GetLocalTime */ GetLocalTime(&st); SystemTimeToFileTime(&st, &ft); li.LowPart = ft.dwLowDateTime; li.HighPart = ft.dwHighDateTime; li.QuadPart /= SECS_TO_FT_MULT; li.QuadPart -= base_time.QuadPart; tv->sec = li.LowPart; tv->msec = st.wMilliseconds; #endif /* WINCE_TIME */ return PJ_SUCCESS; }
PJ_DEF(pj_status_t) pj_gettimeofday(pj_time_val *tv) { SYSTEMTIME st; FILETIME ft; LARGE_INTEGER li; if (base_time.QuadPart == 0) get_base_time(); GetLocalTime(&st); SystemTimeToFileTime(&st, &ft); li.LowPart = ft.dwLowDateTime; li.HighPart = ft.dwHighDateTime; li.QuadPart /= SECS_TO_FT_MULT; li.QuadPart -= base_time.QuadPart; tv->sec = li.LowPart; tv->msec = st.wMilliseconds; return PJ_SUCCESS; }
inline uint64_t cq_count(countque_t *cqi) { time_t base_time = get_base_time(cqi->tic_per_sec); cq_adjust(cqi, base_time); return cqi->count; }