1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #ifndef KVMCLOCK_H
- #define KVMCLOCK_H
- #define MSR_KVM_WALL_CLOCK_NEW 0x4b564d00
- #define MSR_KVM_SYSTEM_TIME_NEW 0x4b564d01
- #define MAX_CPU 64
- #define PVCLOCK_TSC_STABLE_BIT (1 << 0)
- #define PVCLOCK_RAW_CYCLE_BIT (1 << 7) /* Get raw cycle */
- # define NSEC_PER_SEC 1000000000ULL
- typedef u64 cycle_t;
- struct pvclock_vcpu_time_info {
- u32 version;
- u32 pad0;
- u64 tsc_timestamp;
- u64 system_time;
- u32 tsc_to_system_mul;
- s8 tsc_shift;
- u8 flags;
- u8 pad[2];
- } __attribute__((__packed__)); /* 32 bytes */
- struct pvclock_wall_clock {
- u32 version;
- u32 sec;
- u32 nsec;
- } __attribute__((__packed__));
- struct timespec {
- long tv_sec;
- long tv_nsec;
- };
- void pvclock_set_flags(unsigned char flags);
- cycle_t kvm_clock_read();
- void kvm_get_wallclock(struct timespec *ts);
- void kvm_clock_init(void *data);
- void kvm_clock_clear(void *data);
- #endif
|