/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR MIT) */1/******************************************************************************2* evtchn.h3*4* Interface to /dev/xen/evtchn.5*6* Copyright (c) 2003-2005, K A Fraser7*8* This program is free software; you can redistribute it and/or9* modify it under the terms of the GNU General Public License version 210* as published by the Free Software Foundation; or, when distributed11* separately from the Linux kernel or incorporated into other12* software packages, subject to the following license:13*14* Permission is hereby granted, free of charge, to any person obtaining a copy15* of this source file (the "Software"), to deal in the Software without16* restriction, including without limitation the rights to use, copy, modify,17* merge, publish, distribute, sublicense, and/or sell copies of the Software,18* and to permit persons to whom the Software is furnished to do so, subject to19* the following conditions:20*21* The above copyright notice and this permission notice shall be included in22* all copies or substantial portions of the Software.23*24* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR25* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,26* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE27* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER28* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING29* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS30* IN THE SOFTWARE.31*/3233#ifndef __LINUX_PUBLIC_EVTCHN_H__34#define __LINUX_PUBLIC_EVTCHN_H__3536/*37* Bind a fresh port to VIRQ @virq.38* Return allocated port.39*/40#define IOCTL_EVTCHN_BIND_VIRQ \41_IOC(_IOC_NONE, 'E', 0, sizeof(struct ioctl_evtchn_bind_virq))42struct ioctl_evtchn_bind_virq {43unsigned int virq;44};4546/*47* Bind a fresh port to remote <@remote_domain, @remote_port>.48* Return allocated port.49*/50#define IOCTL_EVTCHN_BIND_INTERDOMAIN \51_IOC(_IOC_NONE, 'E', 1, sizeof(struct ioctl_evtchn_bind_interdomain))52struct ioctl_evtchn_bind_interdomain {53unsigned int remote_domain, remote_port;54};5556/*57* Allocate a fresh port for binding to @remote_domain.58* Return allocated port.59*/60#define IOCTL_EVTCHN_BIND_UNBOUND_PORT \61_IOC(_IOC_NONE, 'E', 2, sizeof(struct ioctl_evtchn_bind_unbound_port))62struct ioctl_evtchn_bind_unbound_port {63unsigned int remote_domain;64};6566/*67* Unbind previously allocated @port.68*/69#define IOCTL_EVTCHN_UNBIND \70_IOC(_IOC_NONE, 'E', 3, sizeof(struct ioctl_evtchn_unbind))71struct ioctl_evtchn_unbind {72unsigned int port;73};7475/*76* Unbind previously allocated @port.77*/78#define IOCTL_EVTCHN_NOTIFY \79_IOC(_IOC_NONE, 'E', 4, sizeof(struct ioctl_evtchn_notify))80struct ioctl_evtchn_notify {81unsigned int port;82};8384/* Clear and reinitialise the event buffer. Clear error condition. */85#define IOCTL_EVTCHN_RESET \86_IOC(_IOC_NONE, 'E', 5, 0)8788/*89* Restrict this file descriptor so that it can only be used to bind90* new interdomain events from one domain.91*92* Once a file descriptor has been restricted it cannot be93* de-restricted, and must be closed and re-opened. Event channels94* which were bound before restricting remain bound afterwards, and95* can be notified as usual.96*/97#define IOCTL_EVTCHN_RESTRICT_DOMID \98_IOC(_IOC_NONE, 'E', 6, sizeof(struct ioctl_evtchn_restrict_domid))99struct ioctl_evtchn_restrict_domid {100domid_t domid;101};102103/*104* Bind statically allocated @port.105*/106#define IOCTL_EVTCHN_BIND_STATIC \107_IOC(_IOC_NONE, 'E', 7, sizeof(struct ioctl_evtchn_bind))108struct ioctl_evtchn_bind {109unsigned int port;110};111112#endif /* __LINUX_PUBLIC_EVTCHN_H__ */113114115