/root/src/xen/xen/include/asm/time.h
Line | Count | Source (jump to first uncovered line) |
1 | | |
2 | | #ifndef __X86_TIME_H__ |
3 | | #define __X86_TIME_H__ |
4 | | |
5 | | #include <asm/msr.h> |
6 | | |
7 | | /* |
8 | | * PV TSC emulation modes: |
9 | | * 0 = guest rdtsc/p executed natively when monotonicity can be guaranteed |
10 | | * and emulated otherwise (with frequency scaled if necessary) |
11 | | * 1 = guest rdtsc/p always emulated at 1GHz (kernel and user) |
12 | | * 2 = guest rdtsc always executed natively (no monotonicity/frequency |
13 | | * guarantees); guest rdtscp emulated at native frequency if |
14 | | * unsupported by h/w, else executed natively |
15 | | * 3 = same as 2, except xen manages TSC_AUX register so guest can |
16 | | * determine when a restore/migration has occurred and assumes |
17 | | * guest obtains/uses pvclock-like mechanism to adjust for |
18 | | * monotonicity and frequency changes |
19 | | */ |
20 | 2 | #define TSC_MODE_DEFAULT 0 |
21 | 0 | #define TSC_MODE_ALWAYS_EMULATE 1 |
22 | 0 | #define TSC_MODE_NEVER_EMULATE 2 |
23 | 37.0k | #define TSC_MODE_PVRDTSCP 3 |
24 | | |
25 | | typedef u64 cycles_t; |
26 | | |
27 | | extern bool disable_tsc_sync; |
28 | | |
29 | | static inline cycles_t get_cycles(void) |
30 | 0 | { |
31 | 0 | return rdtsc(); |
32 | 0 | } Unexecuted instantiation: cpu.c:get_cycles Unexecuted instantiation: cpupool.c:get_cycles Unexecuted instantiation: domctl.c:get_cycles Unexecuted instantiation: domain.c:get_cycles Unexecuted instantiation: event_2l.c:get_cycles Unexecuted instantiation: event_channel.c:get_cycles Unexecuted instantiation: event_fifo.c:get_cycles Unexecuted instantiation: grant_table.c:get_cycles Unexecuted instantiation: guestcopy.c:get_cycles Unexecuted instantiation: irq.c:get_cycles Unexecuted instantiation: kernel.c:get_cycles Unexecuted instantiation: keyhandler.c:get_cycles Unexecuted instantiation: kexec.c:get_cycles Unexecuted instantiation: kimage.c:get_cycles Unexecuted instantiation: mem_access.c:get_cycles Unexecuted instantiation: memory.c:get_cycles Unexecuted instantiation: monitor.c:get_cycles Unexecuted instantiation: multicall.c:get_cycles Unexecuted instantiation: page_alloc.c:get_cycles Unexecuted instantiation: preempt.c:get_cycles Unexecuted instantiation: random.c:get_cycles Unexecuted instantiation: rangeset.c:get_cycles Unexecuted instantiation: rcupdate.c:get_cycles Unexecuted instantiation: rwlock.c:get_cycles Unexecuted instantiation: sched_arinc653.c:get_cycles Unexecuted instantiation: sched_credit.c:get_cycles Unexecuted instantiation: sched_credit2.c:get_cycles Unexecuted instantiation: sched_rt.c:get_cycles Unexecuted instantiation: sched_null.c:get_cycles Unexecuted instantiation: schedule.c:get_cycles Unexecuted instantiation: shutdown.c:get_cycles Unexecuted instantiation: softirq.c:get_cycles Unexecuted instantiation: spinlock.c:get_cycles Unexecuted instantiation: stop_machine.c:get_cycles Unexecuted instantiation: symbols.c:get_cycles Unexecuted instantiation: sysctl.c:get_cycles Unexecuted instantiation: tasklet.c:get_cycles Unexecuted instantiation: time.c:get_cycles Unexecuted instantiation: timer.c:get_cycles Unexecuted instantiation: trace.c:get_cycles Unexecuted instantiation: vm_event.c:get_cycles Unexecuted instantiation: vsprintf.c:get_cycles Unexecuted instantiation: wait.c:get_cycles Unexecuted instantiation: xenoprof.c:get_cycles Unexecuted instantiation: xmalloc_tlsf.c:get_cycles Unexecuted instantiation: tmem.c:get_cycles Unexecuted instantiation: tmem_xen.c:get_cycles Unexecuted instantiation: tmem_control.c:get_cycles Unexecuted instantiation: llvm.c:get_cycles Unexecuted instantiation: libelf-loader.c:get_cycles Unexecuted instantiation: console.c:get_cycles Unexecuted instantiation: ns16550.c:get_cycles Unexecuted instantiation: ehci-dbgp.c:get_cycles Unexecuted instantiation: cpufreq.c:get_cycles Unexecuted instantiation: cpufreq_ondemand.c:get_cycles Unexecuted instantiation: cpufreq_misc_governors.c:get_cycles Unexecuted instantiation: utility.c:get_cycles Unexecuted instantiation: pci.c:get_cycles Unexecuted instantiation: vpci.c:get_cycles Unexecuted instantiation: header.c:get_cycles Unexecuted instantiation: msi.c:get_cycles Unexecuted instantiation: msix.c:get_cycles Unexecuted instantiation: iommu.c:get_cycles Unexecuted instantiation: io.c:get_cycles Unexecuted instantiation: dmar.c:get_cycles Unexecuted instantiation: utils.c:get_cycles Unexecuted instantiation: qinval.c:get_cycles Unexecuted instantiation: intremap.c:get_cycles Unexecuted instantiation: quirks.c:get_cycles Unexecuted instantiation: vtd.c:get_cycles Unexecuted instantiation: ats.c:get_cycles Unexecuted instantiation: iommu_init.c:get_cycles Unexecuted instantiation: iommu_map.c:get_cycles Unexecuted instantiation: pci_amd_iommu.c:get_cycles Unexecuted instantiation: iommu_intr.c:get_cycles Unexecuted instantiation: iommu_cmd.c:get_cycles Unexecuted instantiation: iommu_guest.c:get_cycles Unexecuted instantiation: pmstat.c:get_cycles Unexecuted instantiation: reboot.c:get_cycles Unexecuted instantiation: erst.c:get_cycles Unexecuted instantiation: apei-io.c:get_cycles Unexecuted instantiation: vga.c:get_cycles Unexecuted instantiation: xsm_core.c:get_cycles Unexecuted instantiation: apic.c:get_cycles Unexecuted instantiation: cpuid.c:get_cycles Unexecuted instantiation: compat.c:get_cycles Unexecuted instantiation: crash.c:get_cycles Unexecuted instantiation: debug.c:get_cycles Unexecuted instantiation: delay.c:get_cycles Unexecuted instantiation: domain_page.c:get_cycles Unexecuted instantiation: flushtlb.c:get_cycles Unexecuted instantiation: hypercall.c:get_cycles Unexecuted instantiation: i387.c:get_cycles Unexecuted instantiation: i8259.c:get_cycles Unexecuted instantiation: io_apic.c:get_cycles Unexecuted instantiation: msr.c:get_cycles Unexecuted instantiation: ioport_emulate.c:get_cycles Unexecuted instantiation: machine_kexec.c:get_cycles Unexecuted instantiation: microcode_amd.c:get_cycles Unexecuted instantiation: microcode_intel.c:get_cycles Unexecuted instantiation: microcode.c:get_cycles Unexecuted instantiation: mm.c:get_cycles Unexecuted instantiation: mpparse.c:get_cycles Unexecuted instantiation: nmi.c:get_cycles Unexecuted instantiation: numa.c:get_cycles Unexecuted instantiation: physdev.c:get_cycles Unexecuted instantiation: platform_hypercall.c:get_cycles Unexecuted instantiation: psr.c:get_cycles Unexecuted instantiation: setup.c:get_cycles Unexecuted instantiation: smp.c:get_cycles Unexecuted instantiation: smpboot.c:get_cycles Unexecuted instantiation: traps.c:get_cycles Unexecuted instantiation: usercopy.c:get_cycles Unexecuted instantiation: x86_emulate.c:get_cycles Unexecuted instantiation: tboot.c:get_cycles Unexecuted instantiation: hpet.c:get_cycles Unexecuted instantiation: xstate.c:get_cycles Unexecuted instantiation: lib.c:get_cycles Unexecuted instantiation: power.c:get_cycles Unexecuted instantiation: suspend.c:get_cycles Unexecuted instantiation: cpu_idle.c:get_cycles Unexecuted instantiation: cpuidle_menu.c:get_cycles Unexecuted instantiation: powernow.c:get_cycles Unexecuted instantiation: amd.c:get_cycles Unexecuted instantiation: common.c:get_cycles Unexecuted instantiation: intel.c:get_cycles Unexecuted instantiation: mwait-idle.c:get_cycles Unexecuted instantiation: vpmu.c:get_cycles Unexecuted instantiation: vpmu_amd.c:get_cycles Unexecuted instantiation: vpmu_intel.c:get_cycles Unexecuted instantiation: amd_nonfatal.c:get_cycles Unexecuted instantiation: mce_amd.c:get_cycles Unexecuted instantiation: mcaction.c:get_cycles Unexecuted instantiation: barrier.c:get_cycles Unexecuted instantiation: mctelem.c:get_cycles Unexecuted instantiation: mce.c:get_cycles Unexecuted instantiation: mce-apei.c:get_cycles Unexecuted instantiation: mce_intel.c:get_cycles Unexecuted instantiation: non-fatal.c:get_cycles Unexecuted instantiation: util.c:get_cycles Unexecuted instantiation: vmce.c:get_cycles Unexecuted instantiation: bigsmp.c:get_cycles Unexecuted instantiation: x2apic.c:get_cycles Unexecuted instantiation: default.c:get_cycles Unexecuted instantiation: delivery.c:get_cycles Unexecuted instantiation: probe.c:get_cycles Unexecuted instantiation: asid.c:get_cycles Unexecuted instantiation: dm.c:get_cycles Unexecuted instantiation: emulate.c:get_cycles Unexecuted instantiation: hvm.c:get_cycles Unexecuted instantiation: i8254.c:get_cycles Unexecuted instantiation: intercept.c:get_cycles Unexecuted instantiation: ioreq.c:get_cycles Unexecuted instantiation: mtrr.c:get_cycles Unexecuted instantiation: nestedhvm.c:get_cycles Unexecuted instantiation: pmtimer.c:get_cycles Unexecuted instantiation: rtc.c:get_cycles Unexecuted instantiation: save.c:get_cycles Unexecuted instantiation: stdvga.c:get_cycles Unexecuted instantiation: vioapic.c:get_cycles Unexecuted instantiation: viridian.c:get_cycles Unexecuted instantiation: vlapic.c:get_cycles Unexecuted instantiation: vmsi.c:get_cycles Unexecuted instantiation: vpic.c:get_cycles Unexecuted instantiation: vpt.c:get_cycles Unexecuted instantiation: intr.c:get_cycles Unexecuted instantiation: nestedsvm.c:get_cycles Unexecuted instantiation: svm.c:get_cycles Unexecuted instantiation: svmdebug.c:get_cycles Unexecuted instantiation: vmcb.c:get_cycles Unexecuted instantiation: realmode.c:get_cycles Unexecuted instantiation: vmcs.c:get_cycles Unexecuted instantiation: vmx.c:get_cycles Unexecuted instantiation: vvmx.c:get_cycles Unexecuted instantiation: paging.c:get_cycles Unexecuted instantiation: p2m.c:get_cycles Unexecuted instantiation: p2m-pt.c:get_cycles Unexecuted instantiation: p2m-ept.c:get_cycles Unexecuted instantiation: p2m-pod.c:get_cycles Unexecuted instantiation: altp2m.c:get_cycles Unexecuted instantiation: guest_walk.c:get_cycles Unexecuted instantiation: mem_paging.c:get_cycles Unexecuted instantiation: mem_sharing.c:get_cycles Unexecuted instantiation: multi.c:get_cycles Unexecuted instantiation: hap.c:get_cycles Unexecuted instantiation: nested_hap.c:get_cycles Unexecuted instantiation: nested_ept.c:get_cycles Unexecuted instantiation: nmi_int.c:get_cycles Unexecuted instantiation: op_model_p4.c:get_cycles Unexecuted instantiation: op_model_ppro.c:get_cycles Unexecuted instantiation: op_model_athlon.c:get_cycles Unexecuted instantiation: backtrace.c:get_cycles Unexecuted instantiation: callback.c:get_cycles Unexecuted instantiation: descriptor-tables.c:get_cycles Unexecuted instantiation: emul-gate-op.c:get_cycles Unexecuted instantiation: emul-inv-op.c:get_cycles Unexecuted instantiation: emul-priv-op.c:get_cycles Unexecuted instantiation: iret.c:get_cycles Unexecuted instantiation: misc-hypercalls.c:get_cycles Unexecuted instantiation: ro-page-fault.c:get_cycles Unexecuted instantiation: acpi_mmcfg.c:get_cycles Unexecuted instantiation: mmconf-fam10h.c:get_cycles Unexecuted instantiation: mmconfig_64.c:get_cycles Unexecuted instantiation: mmconfig-shared.c:get_cycles |
33 | | |
34 | | unsigned long |
35 | | mktime (unsigned int year, unsigned int mon, |
36 | | unsigned int day, unsigned int hour, |
37 | | unsigned int min, unsigned int sec); |
38 | | |
39 | | int time_suspend(void); |
40 | | int time_resume(void); |
41 | | |
42 | | void init_percpu_time(void); |
43 | | void time_latch_stamps(void); |
44 | | |
45 | | struct ioreq; |
46 | | int hwdom_pit_access(struct ioreq *ioreq); |
47 | | |
48 | | int cpu_frequency_change(u64 freq); |
49 | | |
50 | | void pit_broadcast_enter(void); |
51 | | void pit_broadcast_exit(void); |
52 | | int pit_broadcast_is_available(void); |
53 | | |
54 | | uint64_t acpi_pm_tick_to_ns(uint64_t ticks); |
55 | | uint64_t ns_to_acpi_pm_tick(uint64_t ns); |
56 | | |
57 | | uint64_t tsc_ticks2ns(uint64_t ticks); |
58 | | |
59 | | void pv_soft_rdtsc(struct vcpu *v, struct cpu_user_regs *regs, int rdtscp); |
60 | | u64 gtime_to_gtsc(struct domain *d, u64 time); |
61 | | u64 gtsc_to_gtime(struct domain *d, u64 tsc); |
62 | | |
63 | | void tsc_set_info(struct domain *d, uint32_t tsc_mode, uint64_t elapsed_nsec, |
64 | | uint32_t gtsc_khz, uint32_t incarnation); |
65 | | |
66 | | void tsc_get_info(struct domain *d, uint32_t *tsc_mode, uint64_t *elapsed_nsec, |
67 | | uint32_t *gtsc_khz, uint32_t *incarnation); |
68 | | |
69 | | |
70 | | void force_update_vcpu_system_time(struct vcpu *v); |
71 | | |
72 | | bool clocksource_is_tsc(void); |
73 | | int host_tsc_is_safe(void); |
74 | | u64 stime2tsc(s_time_t stime); |
75 | | |
76 | | struct time_scale; |
77 | | void set_time_scale(struct time_scale *ts, u64 ticks_per_sec); |
78 | | u64 scale_delta(u64 delta, const struct time_scale *scale); |
79 | | |
80 | | #endif /* __X86_TIME_H__ */ |