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