Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/include/uapi/xen/evtchn.h
26282 views
1
/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR MIT) */
2
/******************************************************************************
3
* evtchn.h
4
*
5
* Interface to /dev/xen/evtchn.
6
*
7
* Copyright (c) 2003-2005, K A Fraser
8
*
9
* This program is free software; you can redistribute it and/or
10
* modify it under the terms of the GNU General Public License version 2
11
* as published by the Free Software Foundation; or, when distributed
12
* separately from the Linux kernel or incorporated into other
13
* software packages, subject to the following license:
14
*
15
* Permission is hereby granted, free of charge, to any person obtaining a copy
16
* of this source file (the "Software"), to deal in the Software without
17
* restriction, including without limitation the rights to use, copy, modify,
18
* merge, publish, distribute, sublicense, and/or sell copies of the Software,
19
* and to permit persons to whom the Software is furnished to do so, subject to
20
* the following conditions:
21
*
22
* The above copyright notice and this permission notice shall be included in
23
* all copies or substantial portions of the Software.
24
*
25
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
26
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
30
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
31
* IN THE SOFTWARE.
32
*/
33
34
#ifndef __LINUX_PUBLIC_EVTCHN_H__
35
#define __LINUX_PUBLIC_EVTCHN_H__
36
37
/*
38
* Bind a fresh port to VIRQ @virq.
39
* Return allocated port.
40
*/
41
#define IOCTL_EVTCHN_BIND_VIRQ \
42
_IOC(_IOC_NONE, 'E', 0, sizeof(struct ioctl_evtchn_bind_virq))
43
struct ioctl_evtchn_bind_virq {
44
unsigned int virq;
45
};
46
47
/*
48
* Bind a fresh port to remote <@remote_domain, @remote_port>.
49
* Return allocated port.
50
*/
51
#define IOCTL_EVTCHN_BIND_INTERDOMAIN \
52
_IOC(_IOC_NONE, 'E', 1, sizeof(struct ioctl_evtchn_bind_interdomain))
53
struct ioctl_evtchn_bind_interdomain {
54
unsigned int remote_domain, remote_port;
55
};
56
57
/*
58
* Allocate a fresh port for binding to @remote_domain.
59
* Return allocated port.
60
*/
61
#define IOCTL_EVTCHN_BIND_UNBOUND_PORT \
62
_IOC(_IOC_NONE, 'E', 2, sizeof(struct ioctl_evtchn_bind_unbound_port))
63
struct ioctl_evtchn_bind_unbound_port {
64
unsigned int remote_domain;
65
};
66
67
/*
68
* Unbind previously allocated @port.
69
*/
70
#define IOCTL_EVTCHN_UNBIND \
71
_IOC(_IOC_NONE, 'E', 3, sizeof(struct ioctl_evtchn_unbind))
72
struct ioctl_evtchn_unbind {
73
unsigned int port;
74
};
75
76
/*
77
* Unbind previously allocated @port.
78
*/
79
#define IOCTL_EVTCHN_NOTIFY \
80
_IOC(_IOC_NONE, 'E', 4, sizeof(struct ioctl_evtchn_notify))
81
struct ioctl_evtchn_notify {
82
unsigned int port;
83
};
84
85
/* Clear and reinitialise the event buffer. Clear error condition. */
86
#define IOCTL_EVTCHN_RESET \
87
_IOC(_IOC_NONE, 'E', 5, 0)
88
89
/*
90
* Restrict this file descriptor so that it can only be used to bind
91
* new interdomain events from one domain.
92
*
93
* Once a file descriptor has been restricted it cannot be
94
* de-restricted, and must be closed and re-opened. Event channels
95
* which were bound before restricting remain bound afterwards, and
96
* can be notified as usual.
97
*/
98
#define IOCTL_EVTCHN_RESTRICT_DOMID \
99
_IOC(_IOC_NONE, 'E', 6, sizeof(struct ioctl_evtchn_restrict_domid))
100
struct ioctl_evtchn_restrict_domid {
101
domid_t domid;
102
};
103
104
/*
105
* Bind statically allocated @port.
106
*/
107
#define IOCTL_EVTCHN_BIND_STATIC \
108
_IOC(_IOC_NONE, 'E', 7, sizeof(struct ioctl_evtchn_bind))
109
struct ioctl_evtchn_bind {
110
unsigned int port;
111
};
112
113
#endif /* __LINUX_PUBLIC_EVTCHN_H__ */
114
115