49 lines
		
	
	
	
		
			1.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			49 lines
		
	
	
	
		
			1.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /*
 | ||
|  |  * same structure to x86's | ||
|  |  * Hopefully asm-x86/pvclock-abi.h would be moved to somewhere more generic. | ||
|  |  * For now, define same duplicated definitions. | ||
|  |  */ | ||
|  | 
 | ||
|  | #ifndef _ASM_IA64__PVCLOCK_ABI_H
 | ||
|  | #define _ASM_IA64__PVCLOCK_ABI_H
 | ||
|  | #ifndef __ASSEMBLY__
 | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * These structs MUST NOT be changed. | ||
|  |  * They are the ABI between hypervisor and guest OS. | ||
|  |  * Both Xen and KVM are using this. | ||
|  |  * | ||
|  |  * pvclock_vcpu_time_info holds the system time and the tsc timestamp | ||
|  |  * of the last update. So the guest can use the tsc delta to get a | ||
|  |  * more precise system time.  There is one per virtual cpu. | ||
|  |  * | ||
|  |  * pvclock_wall_clock references the point in time when the system | ||
|  |  * time was zero (usually boot time), thus the guest calculates the | ||
|  |  * current wall clock by adding the system time. | ||
|  |  * | ||
|  |  * Protocol for the "version" fields is: hypervisor raises it (making | ||
|  |  * it uneven) before it starts updating the fields and raises it again | ||
|  |  * (making it even) when it is done.  Thus the guest can make sure the | ||
|  |  * time values it got are consistent by checking the version before | ||
|  |  * and after reading them. | ||
|  |  */ | ||
|  | 
 | ||
|  | struct pvclock_vcpu_time_info { | ||
|  | 	u32   version; | ||
|  | 	u32   pad0; | ||
|  | 	u64   tsc_timestamp; | ||
|  | 	u64   system_time; | ||
|  | 	u32   tsc_to_system_mul; | ||
|  | 	s8    tsc_shift; | ||
|  | 	u8    pad[3]; | ||
|  | } __attribute__((__packed__)); /* 32 bytes */ | ||
|  | 
 | ||
|  | struct pvclock_wall_clock { | ||
|  | 	u32   version; | ||
|  | 	u32   sec; | ||
|  | 	u32   nsec; | ||
|  | } __attribute__((__packed__)); | ||
|  | 
 | ||
|  | #endif /* __ASSEMBLY__ */
 | ||
|  | #endif /* _ASM_IA64__PVCLOCK_ABI_H */
 |