![]() |
|
|||
0001 /* SPDX-License-Identifier: MIT */ 0002 /****************************************************************************** 0003 * callback.h 0004 * 0005 * Register guest OS callbacks with Xen. 0006 * 0007 * Copyright (c) 2006, Ian Campbell 0008 */ 0009 0010 #ifndef __XEN_PUBLIC_CALLBACK_H__ 0011 #define __XEN_PUBLIC_CALLBACK_H__ 0012 0013 #include <xen/interface/xen.h> 0014 0015 /* 0016 * Prototype for this hypercall is: 0017 * long callback_op(int cmd, void *extra_args) 0018 * @cmd == CALLBACKOP_??? (callback operation). 0019 * @extra_args == Operation-specific extra arguments (NULL if none). 0020 */ 0021 0022 /* x86: Callback for event delivery. */ 0023 #define CALLBACKTYPE_event 0 0024 0025 /* x86: Failsafe callback when guest state cannot be restored by Xen. */ 0026 #define CALLBACKTYPE_failsafe 1 0027 0028 /* x86/64 hypervisor: Syscall by 64-bit guest app ('64-on-64-on-64'). */ 0029 #define CALLBACKTYPE_syscall 2 0030 0031 /* 0032 * x86/32 hypervisor: Only available on x86/32 when supervisor_mode_kernel 0033 * feature is enabled. Do not use this callback type in new code. 0034 */ 0035 #define CALLBACKTYPE_sysenter_deprecated 3 0036 0037 /* x86: Callback for NMI delivery. */ 0038 #define CALLBACKTYPE_nmi 4 0039 0040 /* 0041 * x86: sysenter is only available as follows: 0042 * - 32-bit hypervisor: with the supervisor_mode_kernel feature enabled 0043 * - 64-bit hypervisor: 32-bit guest applications on Intel CPUs 0044 * ('32-on-32-on-64', '32-on-64-on-64') 0045 * [nb. also 64-bit guest applications on Intel CPUs 0046 * ('64-on-64-on-64'), but syscall is preferred] 0047 */ 0048 #define CALLBACKTYPE_sysenter 5 0049 0050 /* 0051 * x86/64 hypervisor: Syscall by 32-bit guest app on AMD CPUs 0052 * ('32-on-32-on-64', '32-on-64-on-64') 0053 */ 0054 #define CALLBACKTYPE_syscall32 7 0055 0056 /* 0057 * Disable event deliver during callback? This flag is ignored for event and 0058 * NMI callbacks: event delivery is unconditionally disabled. 0059 */ 0060 #define _CALLBACKF_mask_events 0 0061 #define CALLBACKF_mask_events (1U << _CALLBACKF_mask_events) 0062 0063 /* 0064 * Register a callback. 0065 */ 0066 #define CALLBACKOP_register 0 0067 struct callback_register { 0068 uint16_t type; 0069 uint16_t flags; 0070 xen_callback_t address; 0071 }; 0072 0073 /* 0074 * Unregister a callback. 0075 * 0076 * Not all callbacks can be unregistered. -EINVAL will be returned if 0077 * you attempt to unregister such a callback. 0078 */ 0079 #define CALLBACKOP_unregister 1 0080 struct callback_unregister { 0081 uint16_t type; 0082 uint16_t _unused; 0083 }; 0084 0085 #endif /* __XEN_PUBLIC_CALLBACK_H__ */
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.1.0 LXR engine. The LXR team |
![]() ![]() |