diff options
author | Keir Fraser <keir@xen.org> | 2010-12-15 10:49:57 +0000 |
---|---|---|
committer | Keir Fraser <keir@xen.org> | 2010-12-15 10:49:57 +0000 |
commit | e9a67fa1885580368fb00de24678671692095d80 (patch) | |
tree | c31301884053bf6b237a129e0d1916f0bcee6c8e /xen/arch/x86/time.c | |
parent | e28218a339349c04ec5912ec10faaa6cca065dea (diff) | |
download | xen-e9a67fa1885580368fb00de24678671692095d80.tar.gz xen-e9a67fa1885580368fb00de24678671692095d80.tar.bz2 xen-e9a67fa1885580368fb00de24678671692095d80.zip |
x86: Define a new function gtsc_to_gtime()
Define it to do the transform from guest tsc to guest time.
Fix the typo in gtime_to_gtsc() definition.
Signed-off-by: Wei Gang <gang.wei@intel.com>
Diffstat (limited to 'xen/arch/x86/time.c')
-rw-r--r-- | xen/arch/x86/time.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index d57a9cb518..0be33d97e2 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -1634,11 +1634,20 @@ static void __init tsc_parse(const char *s) } custom_param("tsc", tsc_parse); -u64 gtime_to_gtsc(struct domain *d, u64 tsc) +u64 gtime_to_gtsc(struct domain *d, u64 time) { if ( !is_hvm_domain(d) ) - tsc = max_t(s64, tsc - d->arch.vtsc_offset, 0); - return scale_delta(tsc, &d->arch.ns_to_vtsc); + time = max_t(s64, time - d->arch.vtsc_offset, 0); + return scale_delta(time, &d->arch.ns_to_vtsc); +} + +u64 gtsc_to_gtime(struct domain *d, u64 tsc) +{ + u64 time = scale_delta(tsc, &d->arch.vtsc_to_ns); + + if ( !is_hvm_domain(d) ) + time += d->arch.vtsc_offset; + return time; } void pv_soft_rdtsc(struct vcpu *v, struct cpu_user_regs *regs, int rdtscp) |