1 #ifndef _IPXE_XENVER_H
2 #define _IPXE_VENVER_H
3 
4 /** @file
5  *
6  * Xen version
7  *
8  */
9 
10 FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
11 
12 #include <ipxe/xen.h>
13 #include <xen/version.h>
14 
15 /**
16  * Get Xen version
17  *
18  * @v xen		Xen hypervisor
19  * @ret version		Version (major.minor: 16 bits each)
20  */
21 static inline __attribute__ (( always_inline )) uint32
xenver_version(struct xen_hypervisor * xen)22 xenver_version ( struct xen_hypervisor *xen ) {
23 
24 	return xen_hypercall_2 ( xen, __HYPERVISOR_xen_version,
25 				 XENVER_version, 0 );
26 }
27 
28 /**
29  * Get Xen extra version string
30  *
31  * @v xen		Xen hypervisor
32  * @v extraversion	Extra version string to fill in
33  * @ret xenrc		Xen status code
34  */
35 static inline __attribute__ (( always_inline )) int
xenver_extraversion(struct xen_hypervisor * xen,xen_extraversion_t * extraversion)36 xenver_extraversion ( struct xen_hypervisor *xen,
37 		      xen_extraversion_t *extraversion ) {
38 
39 	return xen_hypercall_2 ( xen, __HYPERVISOR_xen_version,
40 				 XENVER_extraversion,
41 				 virt_to_phys ( extraversion ) );
42 }
43 
44 #endif /* _IPXE_XENVER_H */
45