/* * GRUB -- GRand Unified Bootloader * Copyright (C) 2013 Free Software Foundation, Inc. * * GRUB is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * GRUB is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GRUB. If not, see . */ #ifndef GRUB_XEN_HEADER #define GRUB_XEN_HEADER 1 #define __XEN_INTERFACE_VERSION__ 0x0003020a #define memset grub_memset #ifdef ASM_FILE #define __ASSEMBLY__ #include #else #include #include #include #ifndef GRUB_SYMBOL_GENERATOR typedef grub_int8_t int8_t; typedef grub_int16_t int16_t; typedef grub_uint8_t uint8_t; typedef grub_uint16_t uint16_t; typedef grub_uint32_t uint32_t; typedef grub_uint64_t uint64_t; #include #include #include #include #include #include #include #endif #include extern grub_size_t EXPORT_VAR (grub_xen_n_allocated_shared_pages); #define GRUB_XEN_LOG_PAGE_SIZE 12 #define GRUB_XEN_PAGE_SIZE (1 << GRUB_XEN_LOG_PAGE_SIZE) extern volatile struct xencons_interface *grub_xen_xcons; extern volatile struct shared_info *EXPORT_VAR (grub_xen_shared_info); extern volatile struct xenstore_domain_interface *grub_xen_xenstore; extern volatile grant_entry_v1_t *grub_xen_grant_table; void EXPORT_FUNC (grub_xen_store_send) (const void *buf_, grub_size_t len); void EXPORT_FUNC (grub_xen_store_recv) (void *buf_, grub_size_t len); grub_err_t EXPORT_FUNC (grub_xenstore_dir) (const char *dir, int (*hook) (const char *dir, void *hook_data), void *hook_data); void *EXPORT_FUNC (grub_xenstore_get_file) (const char *dir, grub_size_t * len); grub_err_t EXPORT_FUNC (grub_xenstore_write_file) (const char *dir, const void *buf, grub_size_t len); typedef unsigned int grub_xen_grant_t; void *EXPORT_FUNC (grub_xen_alloc_shared_page) (domid_t dom, grub_xen_grant_t * grnum); void EXPORT_FUNC (grub_xen_free_shared_page) (void *ptr); #define mb() asm volatile("mfence;sfence;" : : : "memory"); extern struct start_info *EXPORT_VAR (grub_xen_start_page_addr); void grub_console_init (void); void grub_xendisk_fini (void); void grub_xendisk_init (void); #ifdef __x86_64__ typedef grub_uint64_t grub_xen_mfn_t; #else typedef grub_uint32_t grub_xen_mfn_t; #endif typedef unsigned int grub_xen_evtchn_t; #ifdef GRUB_MACHINE_XEN_PVH extern struct hvm_start_info *pvh_start_info; void grub_xen_setup_pvh (void); #endif #endif #endif