1255040Sgibbs/****************************************************************************** 2255040Sgibbs * xen/xen-os.h 3255040Sgibbs * 4255040Sgibbs * Random collection of macros and definition 5255040Sgibbs * 6255040Sgibbs * Copyright (c) 2003, 2004 Keir Fraser (on behalf of the Xen team) 7255040Sgibbs * All rights reserved. 8255040Sgibbs * 9255040Sgibbs * Permission is hereby granted, free of charge, to any person obtaining a copy 10255040Sgibbs * of this software and associated documentation files (the "Software"), to 11255040Sgibbs * deal in the Software without restriction, including without limitation the 12255040Sgibbs * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 13255040Sgibbs * sell copies of the Software, and to permit persons to whom the Software is 14255040Sgibbs * furnished to do so, subject to the following conditions: 15255040Sgibbs * 16255040Sgibbs * The above copyright notice and this permission notice shall be included in 17255040Sgibbs * all copies or substantial portions of the Software. 18255040Sgibbs * 19255040Sgibbs * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20255040Sgibbs * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21255040Sgibbs * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22255040Sgibbs * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23255040Sgibbs * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 24255040Sgibbs * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25255040Sgibbs * DEALINGS IN THE SOFTWARE. 26255040Sgibbs * 27255040Sgibbs * $FreeBSD: stable/10/sys/xen/xen-os.h 315676 2017-03-21 09:38:59Z royger $ 28255040Sgibbs */ 29255040Sgibbs 30255040Sgibbs#ifndef _XEN_XEN_OS_H_ 31255040Sgibbs#define _XEN_XEN_OS_H_ 32255040Sgibbs 33255040Sgibbs#if !defined(__XEN_INTERFACE_VERSION__) 34255040Sgibbs#define __XEN_INTERFACE_VERSION__ 0x00030208 35255040Sgibbs#endif 36255040Sgibbs 37255040Sgibbs#define GRANT_REF_INVALID 0xffffffff 38255040Sgibbs 39255040Sgibbs#ifdef LOCORE 40255040Sgibbs#define __ASSEMBLY__ 41255040Sgibbs#endif 42255040Sgibbs 43255040Sgibbs#include <machine/xen/xen-os.h> 44255040Sgibbs 45255040Sgibbs#include <xen/interface/xen.h> 46255040Sgibbs 47255040Sgibbs/* Everything below this point is not included by assembler (.S) files. */ 48255040Sgibbs#ifndef __ASSEMBLY__ 49255040Sgibbs 50255040Sgibbs/* Force a proper event-channel callback from Xen. */ 51255040Sgibbsvoid force_evtchn_callback(void); 52255040Sgibbs 53255040Sgibbsextern shared_info_t *HYPERVISOR_shared_info; 54255040Sgibbs 55291239Sroyger#ifdef XENHVM 56291239Sroygerextern int xen_disable_pv_disks; 57291239Sroygerextern int xen_disable_pv_nics; 58291239Sroyger#endif 59291239Sroyger 60315676Sroygerextern bool xen_suspend_cancelled; 61315676Sroyger 62255040Sgibbsenum xen_domain_type { 63255040Sgibbs XEN_NATIVE, /* running on bare hardware */ 64255040Sgibbs XEN_PV_DOMAIN, /* running in a PV domain */ 65255040Sgibbs XEN_HVM_DOMAIN, /* running in a Xen hvm domain */ 66255040Sgibbs}; 67255040Sgibbs 68255040Sgibbsextern enum xen_domain_type xen_domain_type; 69255040Sgibbs 70255040Sgibbsstatic inline int 71255040Sgibbsxen_domain(void) 72255040Sgibbs{ 73255040Sgibbs return (xen_domain_type != XEN_NATIVE); 74255040Sgibbs} 75255040Sgibbs 76255040Sgibbsstatic inline int 77255040Sgibbsxen_pv_domain(void) 78255040Sgibbs{ 79255040Sgibbs return (xen_domain_type == XEN_PV_DOMAIN); 80255040Sgibbs} 81255040Sgibbs 82255040Sgibbsstatic inline int 83255040Sgibbsxen_hvm_domain(void) 84255040Sgibbs{ 85255040Sgibbs return (xen_domain_type == XEN_HVM_DOMAIN); 86255040Sgibbs} 87255040Sgibbs 88255040Sgibbs#ifndef xen_mb 89255040Sgibbs#define xen_mb() mb() 90255040Sgibbs#endif 91255040Sgibbs#ifndef xen_rmb 92255040Sgibbs#define xen_rmb() rmb() 93255040Sgibbs#endif 94255040Sgibbs#ifndef xen_wmb 95255040Sgibbs#define xen_wmb() wmb() 96255040Sgibbs#endif 97255040Sgibbs 98255040Sgibbs#endif /* !__ASSEMBLY__ */ 99255040Sgibbs 100255040Sgibbs#endif /* _XEN_XEN_OS_H_ */ 101