hypercall.h

来自「xen虚拟机源代码安装包」· C头文件 代码 · 共 149 行

H
149
字号
/****************************************************************************** * asm-x86/hypercall.h */#ifndef __ASM_X86_HYPERCALL_H__#define __ASM_X86_HYPERCALL_H__#include <public/physdev.h>#include <xen/types.h>/* * Both do_mmuext_op() and do_mmu_update(): * We steal the m.s.b. of the @count parameter to indicate whether this * invocation of do_mmu_update() is resuming a previously preempted call. */#define MMU_UPDATE_PREEMPTED          (~(~0U>>1))/* * This gets set to a non-zero value whenever hypercall_create_continuation() * is used (outside of multicall context; in multicall context the second call * from do_multicall() itself will have this effect). Internal callers of * hypercall handlers interested in this condition must clear the flag prior * to invoking the respective handler(s). */DECLARE_PER_CPU(char, hc_preempted);extern longdo_event_channel_op_compat(    XEN_GUEST_HANDLE(evtchn_op_t) uop);extern longdo_physdev_op_compat(    XEN_GUEST_HANDLE(physdev_op_t) uop);extern longdo_set_trap_table(    XEN_GUEST_HANDLE(const_trap_info_t) traps);extern intdo_mmu_update(    XEN_GUEST_HANDLE(mmu_update_t) ureqs,    unsigned int count,    XEN_GUEST_HANDLE(uint) pdone,    unsigned int foreigndom);extern longdo_set_gdt(    XEN_GUEST_HANDLE(ulong) frame_list,    unsigned int entries);extern longdo_stack_switch(    unsigned long ss,    unsigned long esp);extern longdo_fpu_taskswitch(    int set);extern longdo_set_debugreg(    int reg,    unsigned long value);extern unsigned longdo_get_debugreg(    int reg);extern longdo_update_descriptor(    u64 pa,    u64 desc);extern intdo_update_va_mapping(    unsigned long va,    u64 val64,    unsigned long flags);extern longdo_physdev_op(    int cmd, XEN_GUEST_HANDLE(void) arg);extern intdo_update_va_mapping_otherdomain(    unsigned long va,    u64 val64,    unsigned long flags,    domid_t domid);extern intdo_mmuext_op(    XEN_GUEST_HANDLE(mmuext_op_t) uops,    unsigned int count,    XEN_GUEST_HANDLE(uint) pdone,    unsigned int foreigndom);extern unsigned longdo_iret(    void);struct vcpu;extern longarch_do_vcpu_op(    int cmd, struct vcpu *v, XEN_GUEST_HANDLE(void) arg);extern intdo_kexec(    unsigned long op, unsigned arg1, XEN_GUEST_HANDLE(void) uarg);#ifdef __x86_64__extern longdo_set_callbacks(    unsigned long event_address,    unsigned long failsafe_address,    unsigned long syscall_address);extern longdo_set_segment_base(    unsigned int which,    unsigned long base);#elseextern longdo_set_callbacks(    unsigned long event_selector,    unsigned long event_address,    unsigned long failsafe_selector,    unsigned long failsafe_address);#endif#ifdef CONFIG_COMPATextern intcompat_physdev_op(    int cmd,    XEN_GUEST_HANDLE(void) arg);extern intarch_compat_vcpu_op(    int cmd, struct vcpu *v, XEN_GUEST_HANDLE(void) arg);#endif#endif /* __ASM_X86_HYPERCALL_H__ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?