1/******************************************************************************
2 * evtchn.h
3 *
4 * Interface to /dev/xen/evtchn.
5 *
6 * Copyright (c) 2003-2005, K A Fraser
7 *
8 * This file may be distributed separately from the Linux kernel, or
9 * incorporated into other software packages, subject to the following license:
10 *
11 * Permission is hereby granted, free of charge, to any person obtaining a copy
12 * of this source file (the "Software"), to deal in the Software without
13 * restriction, including without limitation the rights to use, copy, modify,
14 * merge, publish, distribute, sublicense, and/or sell copies of the Software,
15 * and to permit persons to whom the Software is furnished to do so, subject to
16 * the following conditions:
17 *
18 * The above copyright notice and this permission notice shall be included in
19 * all copies or substantial portions of the Software.
20 *
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
27 * IN THE SOFTWARE.
28 */
29
30#ifndef __XEN_EVTCHN_H__
31#define __XEN_EVTCHN_H__
32
33/*
34 * Bind a fresh port to VIRQ @virq.
35 */
36#define IOCTL_EVTCHN_BIND_VIRQ				\
37	_IOWR('E', 4, struct ioctl_evtchn_bind_virq)
38struct ioctl_evtchn_bind_virq {
39	unsigned int virq;
40	unsigned int port;
41};
42
43/*
44 * Bind a fresh port to remote <@remote_domain, @remote_port>.
45 */
46#define IOCTL_EVTCHN_BIND_INTERDOMAIN			\
47	_IOWR('E', 5, struct ioctl_evtchn_bind_interdomain)
48struct ioctl_evtchn_bind_interdomain {
49	unsigned int remote_domain, remote_port;
50	unsigned int port;
51};
52
53/*
54 * Allocate a fresh port for binding to @remote_domain.
55 */
56#define IOCTL_EVTCHN_BIND_UNBOUND_PORT			\
57	_IOWR('E', 6, struct ioctl_evtchn_bind_unbound_port)
58struct ioctl_evtchn_bind_unbound_port {
59	unsigned int remote_domain;
60	unsigned int port;
61};
62
63/*
64 * Unbind previously allocated @port.
65 */
66#define IOCTL_EVTCHN_UNBIND				\
67	_IOW('E', 7, struct ioctl_evtchn_unbind)
68struct ioctl_evtchn_unbind {
69	unsigned int port;
70};
71
72/*
73 * Send event to previously allocated @port.
74 */
75#define IOCTL_EVTCHN_NOTIFY				\
76	_IOW('E', 8, struct ioctl_evtchn_notify)
77struct ioctl_evtchn_notify {
78	unsigned int port;
79};
80
81/* Clear and reinitialise the event buffer. Clear error condition. */
82#define IOCTL_EVTCHN_RESET				\
83	_IO('E', 9)
84
85#endif /* __XEN_EVTCHN_H__ */
86