1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /****************************************************************************** 3*4882a593Smuzhiyun * version.h 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Xen version, type, and compile information. 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * Copyright (c) 2005, Nguyen Anh Quynh <aquynh@gmail.com> 8*4882a593Smuzhiyun * Copyright (c) 2005, Keir Fraser <keir@xensource.com> 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #ifndef __XEN_PUBLIC_VERSION_H__ 12*4882a593Smuzhiyun #define __XEN_PUBLIC_VERSION_H__ 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun /* NB. All ops return zero on success, except XENVER_version. */ 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun /* arg == NULL; returns major:minor (16:16). */ 17*4882a593Smuzhiyun #define XENVER_version 0 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun /* arg == xen_extraversion_t. */ 20*4882a593Smuzhiyun #define XENVER_extraversion 1 21*4882a593Smuzhiyun struct xen_extraversion { 22*4882a593Smuzhiyun char extraversion[16]; 23*4882a593Smuzhiyun }; 24*4882a593Smuzhiyun #define XEN_EXTRAVERSION_LEN (sizeof(struct xen_extraversion)) 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun /* arg == xen_compile_info_t. */ 27*4882a593Smuzhiyun #define XENVER_compile_info 2 28*4882a593Smuzhiyun struct xen_compile_info { 29*4882a593Smuzhiyun char compiler[64]; 30*4882a593Smuzhiyun char compile_by[16]; 31*4882a593Smuzhiyun char compile_domain[32]; 32*4882a593Smuzhiyun char compile_date[32]; 33*4882a593Smuzhiyun }; 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun #define XENVER_capabilities 3 36*4882a593Smuzhiyun struct xen_capabilities_info { 37*4882a593Smuzhiyun char info[1024]; 38*4882a593Smuzhiyun }; 39*4882a593Smuzhiyun #define XEN_CAPABILITIES_INFO_LEN (sizeof(struct xen_capabilities_info)) 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun #define XENVER_changeset 4 42*4882a593Smuzhiyun struct xen_changeset_info { 43*4882a593Smuzhiyun char info[64]; 44*4882a593Smuzhiyun }; 45*4882a593Smuzhiyun #define XEN_CHANGESET_INFO_LEN (sizeof(struct xen_changeset_info)) 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun #define XENVER_platform_parameters 5 48*4882a593Smuzhiyun struct xen_platform_parameters { 49*4882a593Smuzhiyun xen_ulong_t virt_start; 50*4882a593Smuzhiyun }; 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun #define XENVER_get_features 6 53*4882a593Smuzhiyun struct xen_feature_info { 54*4882a593Smuzhiyun unsigned int submap_idx; /* IN: which 32-bit submap to return */ 55*4882a593Smuzhiyun uint32_t submap; /* OUT: 32-bit submap */ 56*4882a593Smuzhiyun }; 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun /* Declares the features reported by XENVER_get_features. */ 59*4882a593Smuzhiyun #include <xen/interface/features.h> 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun /* arg == NULL; returns host memory page size. */ 62*4882a593Smuzhiyun #define XENVER_pagesize 7 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun /* arg == xen_domain_handle_t. */ 65*4882a593Smuzhiyun #define XENVER_guest_handle 8 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun #define XENVER_commandline 9 68*4882a593Smuzhiyun struct xen_commandline { 69*4882a593Smuzhiyun char buf[1024]; 70*4882a593Smuzhiyun }; 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun /* 73*4882a593Smuzhiyun * Return value is the number of bytes written, or XEN_Exx on error. 74*4882a593Smuzhiyun * Calling with empty parameter returns the size of build_id. 75*4882a593Smuzhiyun */ 76*4882a593Smuzhiyun #define XENVER_build_id 10 77*4882a593Smuzhiyun struct xen_build_id { 78*4882a593Smuzhiyun uint32_t len; /* IN: size of buf[]. */ 79*4882a593Smuzhiyun unsigned char buf[]; 80*4882a593Smuzhiyun }; 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun #endif /* __XEN_PUBLIC_VERSION_H__ */ 83