1 /********************************************* 1 /****************************************************************************** 2 * hypercall.h 2 * hypercall.h 3 * 3 * 4 * Linux-specific hypervisor handling. 4 * Linux-specific hypervisor handling. 5 * 5 * 6 * Stefano Stabellini <stefano.stabellini@eu.c 6 * Stefano Stabellini <stefano.stabellini@eu.citrix.com>, Citrix, 2012 7 * 7 * 8 * This program is free software; you can redi 8 * This program is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU Genera 9 * modify it under the terms of the GNU General Public License version 2 10 * as published by the Free Software Foundatio 10 * as published by the Free Software Foundation; or, when distributed 11 * separately from the Linux kernel or incorpo 11 * separately from the Linux kernel or incorporated into other 12 * software packages, subject to the following 12 * software packages, subject to the following license: 13 * 13 * 14 * Permission is hereby granted, free of charg 14 * Permission is hereby granted, free of charge, to any person obtaining a copy 15 * of this source file (the "Software"), to de 15 * of this source file (the "Software"), to deal in the Software without 16 * restriction, including without limitation t 16 * restriction, including without limitation the rights to use, copy, modify, 17 * merge, publish, distribute, sublicense, and 17 * merge, publish, distribute, sublicense, and/or sell copies of the Software, 18 * and to permit persons to whom the Software 18 * and to permit persons to whom the Software is furnished to do so, subject to 19 * the following conditions: 19 * the following conditions: 20 * 20 * 21 * The above copyright notice and this permiss 21 * The above copyright notice and this permission notice shall be included in 22 * all copies or substantial portions of the S 22 * all copies or substantial portions of the Software. 23 * 23 * 24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT W 24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 25 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE W 25 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 26 * FITNESS FOR A PARTICULAR PURPOSE AND NONINF 26 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 27 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR 27 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 28 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT 28 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 29 * FROM, OUT OF OR IN CONNECTION WITH THE SOFT 29 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 30 * IN THE SOFTWARE. 30 * IN THE SOFTWARE. 31 */ 31 */ 32 32 33 #ifndef _ASM_ARM_XEN_HYPERCALL_H 33 #ifndef _ASM_ARM_XEN_HYPERCALL_H 34 #define _ASM_ARM_XEN_HYPERCALL_H 34 #define _ASM_ARM_XEN_HYPERCALL_H 35 35 36 #include <linux/bug.h> 36 #include <linux/bug.h> 37 37 38 #include <xen/interface/xen.h> 38 #include <xen/interface/xen.h> 39 #include <xen/interface/sched.h> 39 #include <xen/interface/sched.h> 40 #include <xen/interface/platform.h> 40 #include <xen/interface/platform.h> 41 41 42 struct xen_dm_op_buf; 42 struct xen_dm_op_buf; 43 43 44 long privcmd_call(unsigned call, unsigned long 44 long privcmd_call(unsigned call, unsigned long a1, 45 unsigned long a2, unsigned lon 45 unsigned long a2, unsigned long a3, 46 unsigned long a4, unsigned lon 46 unsigned long a4, unsigned long a5); 47 int HYPERVISOR_xen_version(int cmd, void *arg) 47 int HYPERVISOR_xen_version(int cmd, void *arg); 48 int HYPERVISOR_console_io(int cmd, int count, 48 int HYPERVISOR_console_io(int cmd, int count, char *str); 49 int HYPERVISOR_grant_table_op(unsigned int cmd 49 int HYPERVISOR_grant_table_op(unsigned int cmd, void *uop, unsigned int count); 50 int HYPERVISOR_sched_op(int cmd, void *arg); 50 int HYPERVISOR_sched_op(int cmd, void *arg); 51 int HYPERVISOR_event_channel_op(int cmd, void 51 int HYPERVISOR_event_channel_op(int cmd, void *arg); 52 unsigned long HYPERVISOR_hvm_op(int op, void * 52 unsigned long HYPERVISOR_hvm_op(int op, void *arg); 53 int HYPERVISOR_memory_op(unsigned int cmd, voi 53 int HYPERVISOR_memory_op(unsigned int cmd, void *arg); 54 int HYPERVISOR_physdev_op(int cmd, void *arg); 54 int HYPERVISOR_physdev_op(int cmd, void *arg); 55 int HYPERVISOR_vcpu_op(int cmd, int vcpuid, vo 55 int HYPERVISOR_vcpu_op(int cmd, int vcpuid, void *extra_args); 56 int HYPERVISOR_vm_assist(unsigned int cmd, uns 56 int HYPERVISOR_vm_assist(unsigned int cmd, unsigned int type); 57 int HYPERVISOR_dm_op(domid_t domid, unsigned i 57 int HYPERVISOR_dm_op(domid_t domid, unsigned int nr_bufs, 58 struct xen_dm_op_buf *buf 58 struct xen_dm_op_buf *bufs); 59 int HYPERVISOR_platform_op_raw(void *arg); 59 int HYPERVISOR_platform_op_raw(void *arg); 60 static inline int HYPERVISOR_platform_op(struc 60 static inline int HYPERVISOR_platform_op(struct xen_platform_op *op) 61 { 61 { 62 op->interface_version = XENPF_INTERFAC 62 op->interface_version = XENPF_INTERFACE_VERSION; 63 return HYPERVISOR_platform_op_raw(op); 63 return HYPERVISOR_platform_op_raw(op); 64 } 64 } 65 int HYPERVISOR_multicall(struct multicall_entr 65 int HYPERVISOR_multicall(struct multicall_entry *calls, uint32_t nr); 66 66 67 static inline int 67 static inline int 68 HYPERVISOR_suspend(unsigned long start_info_mf 68 HYPERVISOR_suspend(unsigned long start_info_mfn) 69 { 69 { 70 struct sched_shutdown r = { .reason = 70 struct sched_shutdown r = { .reason = SHUTDOWN_suspend }; 71 71 72 /* start_info_mfn is unused on ARM */ 72 /* start_info_mfn is unused on ARM */ 73 return HYPERVISOR_sched_op(SCHEDOP_shu 73 return HYPERVISOR_sched_op(SCHEDOP_shutdown, &r); 74 } 74 } 75 75 76 #endif /* _ASM_ARM_XEN_HYPERCALL_H */ 76 #endif /* _ASM_ARM_XEN_HYPERCALL_H */ 77 77
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.