The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/xen/xen-os.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /******************************************************************************
    2  * xen/xen-os.h
    3  * 
    4  * Random collection of macros and definition
    5  *
    6  * Copyright (c) 2003, 2004 Keir Fraser (on behalf of the Xen team)
    7  * All rights reserved.
    8  *
    9  * Permission is hereby granted, free of charge, to any person obtaining a copy
   10  * of this software and associated documentation files (the "Software"), to
   11  * deal in the Software without restriction, including without limitation the
   12  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
   13  * sell copies of the Software, and to permit persons to whom the Software is
   14  * furnished to do so, subject to the following conditions:
   15  * 
   16  * The above copyright notice and this permission notice shall be included in
   17  * all copies or substantial portions of the Software.
   18  * 
   19  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
   20  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
   21  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
   22  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
   23  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
   24  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
   25  * DEALINGS IN THE SOFTWARE.
   26  *
   27  * $FreeBSD$
   28  */
   29 
   30 #ifndef _XEN_XEN_OS_H_
   31 #define _XEN_XEN_OS_H_
   32 
   33 #if !defined(__XEN_INTERFACE_VERSION__)  
   34 #define  __XEN_INTERFACE_VERSION__ 0x00030208
   35 #endif  
   36 
   37 #define GRANT_REF_INVALID   0xffffffff
   38 
   39 #ifdef LOCORE
   40 #define __ASSEMBLY__
   41 #endif
   42 
   43 #include <machine/xen/xen-os.h>
   44 
   45 #include <xen/interface/xen.h>
   46 
   47 /* Everything below this point is not included by assembler (.S) files. */
   48 #ifndef __ASSEMBLY__
   49 
   50 extern shared_info_t *HYPERVISOR_shared_info;
   51 extern start_info_t *HYPERVISOR_start_info;
   52 
   53 /* XXX: we need to get rid of this and use HYPERVISOR_start_info directly */
   54 extern char *console_page;
   55 
   56 extern int xen_disable_pv_disks;
   57 extern int xen_disable_pv_nics;
   58 
   59 extern bool xen_suspend_cancelled;
   60 
   61 enum xen_domain_type {
   62         XEN_NATIVE,             /* running on bare hardware    */
   63         XEN_PV_DOMAIN,          /* running in a PV domain      */
   64         XEN_HVM_DOMAIN,         /* running in a Xen hvm domain */
   65 };
   66 
   67 extern enum xen_domain_type xen_domain_type;
   68 
   69 static inline int
   70 xen_domain(void)
   71 {
   72         return (xen_domain_type != XEN_NATIVE);
   73 }
   74 
   75 static inline int
   76 xen_pv_domain(void)
   77 {
   78         return (xen_domain_type == XEN_PV_DOMAIN);
   79 }
   80 
   81 static inline int
   82 xen_hvm_domain(void)
   83 {
   84         return (xen_domain_type == XEN_HVM_DOMAIN);
   85 }
   86 
   87 static inline bool
   88 xen_initial_domain(void)
   89 {
   90         return (xen_domain() && HYPERVISOR_start_info != NULL &&
   91             (HYPERVISOR_start_info->flags & SIF_INITDOMAIN) != 0);
   92 }
   93 
   94 /*
   95  * Based on ofed/include/linux/bitops.h
   96  *
   97  * Those helpers are prefixed by xen_ because xen-os.h is widely included
   98  * and we don't want the other drivers using them.
   99  *
  100  */
  101 #define NBPL (NBBY * sizeof(long))
  102 
  103 static inline bool
  104 xen_test_bit(int bit, volatile long *addr)
  105 {
  106         unsigned long mask = 1UL << (bit % NBPL);
  107 
  108         return !!(atomic_load_acq_long(&addr[bit / NBPL]) & mask);
  109 }
  110 
  111 static inline void
  112 xen_set_bit(int bit, volatile long *addr)
  113 {
  114         atomic_set_long(&addr[bit / NBPL], 1UL << (bit % NBPL));
  115 }
  116 
  117 static inline void
  118 xen_clear_bit(int bit, volatile long *addr)
  119 {
  120         atomic_clear_long(&addr[bit / NBPL], 1UL << (bit % NBPL));
  121 }
  122 
  123 #undef NBPL
  124 
  125 /*
  126  * Functions to allocate/free unused memory in order
  127  * to map memory from other domains.
  128  */
  129 struct resource *xenmem_alloc(device_t dev, int *res_id, size_t size);
  130 int xenmem_free(device_t dev, int res_id, struct resource *res);
  131 
  132 /* Debug/emergency function, prints directly to hypervisor console */
  133 void xc_printf(const char *, ...) __printflike(1, 2);
  134 
  135 #ifndef xen_mb
  136 #define xen_mb() mb()
  137 #endif
  138 #ifndef xen_rmb
  139 #define xen_rmb() rmb()
  140 #endif
  141 #ifndef xen_wmb
  142 #define xen_wmb() wmb()
  143 #endif
  144 
  145 #endif /* !__ASSEMBLY__ */
  146 
  147 #endif /* _XEN_XEN_OS_H_ */

Cache object: 8d58b7bf269f1215f949d2a002eed141


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.