blob: 53553f0464970975cff494fe44a2f77346d449da [file] [log] [blame]
Jeremy Fitzhardingea42089d2007-07-17 18:37:04 -07001/******************************************************************************
2 * version.h
3 *
4 * Xen version, type, and compile information.
5 *
6 * Copyright (c) 2005, Nguyen Anh Quynh <aquynh@gmail.com>
7 * Copyright (c) 2005, Keir Fraser <keir@xensource.com>
8 */
9
10#ifndef __XEN_PUBLIC_VERSION_H__
11#define __XEN_PUBLIC_VERSION_H__
12
13/* NB. All ops return zero on success, except XENVER_version. */
14
15/* arg == NULL; returns major:minor (16:16). */
16#define XENVER_version 0
17
18/* arg == xen_extraversion_t. */
19#define XENVER_extraversion 1
20struct xen_extraversion {
21 char extraversion[16];
22};
23#define XEN_EXTRAVERSION_LEN (sizeof(struct xen_extraversion))
24
25/* arg == xen_compile_info_t. */
26#define XENVER_compile_info 2
27struct xen_compile_info {
28 char compiler[64];
29 char compile_by[16];
30 char compile_domain[32];
31 char compile_date[32];
32};
33
34#define XENVER_capabilities 3
35struct xen_capabilities_info {
36 char info[1024];
37};
38#define XEN_CAPABILITIES_INFO_LEN (sizeof(struct xen_capabilities_info))
39
40#define XENVER_changeset 4
41struct xen_changeset_info {
42 char info[64];
43};
44#define XEN_CHANGESET_INFO_LEN (sizeof(struct xen_changeset_info))
45
46#define XENVER_platform_parameters 5
47struct xen_platform_parameters {
Stefano Stabellini256f6312012-09-14 13:34:43 +000048 xen_ulong_t virt_start;
Jeremy Fitzhardingea42089d2007-07-17 18:37:04 -070049};
50
51#define XENVER_get_features 6
52struct xen_feature_info {
53 unsigned int submap_idx; /* IN: which 32-bit submap to return */
54 uint32_t submap; /* OUT: 32-bit submap */
55};
56
57/* Declares the features reported by XENVER_get_features. */
David Howellsa1ce3922012-10-02 18:01:25 +010058#include <xen/interface/features.h>
Jeremy Fitzhardingea42089d2007-07-17 18:37:04 -070059
Jeremy Fitzhardingecff7e812009-03-10 14:39:59 -070060/* arg == NULL; returns host memory page size. */
61#define XENVER_pagesize 7
62
Daniel De Graaf5c13f802012-08-16 16:40:26 -040063/* arg == xen_domain_handle_t. */
64#define XENVER_guest_handle 8
65
Konrad Rzeszutek Wilk0dfa5b5d2012-11-26 19:57:04 -050066/* Declares the xen_domain() macros. */
67#include <xen/xen.h>
68
Liu, Jinsong92e32292012-11-08 05:41:13 +000069/* Check if running on Xen version (major, minor) or later */
70static inline bool
71xen_running_on_version_or_later(unsigned int major, unsigned int minor)
72{
73 unsigned int version;
74
75 if (!xen_domain())
76 return false;
77
78 version = HYPERVISOR_xen_version(XENVER_version, NULL);
79 if ((((version >> 16) == major) && ((version & 0xffff) >= minor)) ||
80 ((version >> 16) > major))
81 return true;
82 return false;
83}
Jeremy Fitzhardingea42089d2007-07-17 18:37:04 -070084#endif /* __XEN_PUBLIC_VERSION_H__ */