brintos

brintos / linux-shallow public Read only

0
0
Text · 2.4 KiB · c67822a Raw
86 lines · c
1/* SPDX-License-Identifier: MIT */2/******************************************************************************3 * callback.h4 *5 * Register guest OS callbacks with Xen.6 *7 * Copyright (c) 2006, Ian Campbell8 */9 10#ifndef __XEN_PUBLIC_CALLBACK_H__11#define __XEN_PUBLIC_CALLBACK_H__12 13#include <xen/interface/xen.h>14 15/*16 * Prototype for this hypercall is:17 *   long callback_op(int cmd, void *extra_args)18 * @cmd        == CALLBACKOP_??? (callback operation).19 * @extra_args == Operation-specific extra arguments (NULL if none).20 */21 22/* x86: Callback for event delivery. */23#define CALLBACKTYPE_event                 024 25/* x86: Failsafe callback when guest state cannot be restored by Xen. */26#define CALLBACKTYPE_failsafe              127 28/* x86/64 hypervisor: Syscall by 64-bit guest app ('64-on-64-on-64'). */29#define CALLBACKTYPE_syscall               230 31/*32 * x86/32 hypervisor: Only available on x86/32 when supervisor_mode_kernel33 *     feature is enabled. Do not use this callback type in new code.34 */35#define CALLBACKTYPE_sysenter_deprecated   336 37/* x86: Callback for NMI delivery. */38#define CALLBACKTYPE_nmi                   439 40/*41 * x86: sysenter is only available as follows:42 * - 32-bit hypervisor: with the supervisor_mode_kernel feature enabled43 * - 64-bit hypervisor: 32-bit guest applications on Intel CPUs44 *                      ('32-on-32-on-64', '32-on-64-on-64')45 *                      [nb. also 64-bit guest applications on Intel CPUs46 *                           ('64-on-64-on-64'), but syscall is preferred]47 */48#define CALLBACKTYPE_sysenter              549 50/*51 * x86/64 hypervisor: Syscall by 32-bit guest app on AMD CPUs52 *                    ('32-on-32-on-64', '32-on-64-on-64')53 */54#define CALLBACKTYPE_syscall32             755 56/*57 * Disable event deliver during callback? This flag is ignored for event and58 * NMI callbacks: event delivery is unconditionally disabled.59 */60#define _CALLBACKF_mask_events             061#define CALLBACKF_mask_events              (1U << _CALLBACKF_mask_events)62 63/*64 * Register a callback.65 */66#define CALLBACKOP_register                067struct callback_register {68	uint16_t type;69	uint16_t flags;70	xen_callback_t address;71};72 73/*74 * Unregister a callback.75 *76 * Not all callbacks can be unregistered. -EINVAL will be returned if77 * you attempt to unregister such a callback.78 */79#define CALLBACKOP_unregister              180struct callback_unregister {81    uint16_t type;82    uint16_t _unused;83};84 85#endif /* __XEN_PUBLIC_CALLBACK_H__ */86