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 /* 31 * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 32 * Use is subject to license terms. 33 */ 34 35 #ifndef _XEN_SYS_EVTCHN_H 36 #define _XEN_SYS_EVTCHN_H 37 38 #pragma ident "%Z%%M% %I% %E% SMI" 39 40 #define _IOC_NONE 0 41 #define _IOC(flag, letter, inum, size) ((letter) << 8 | (inum)) 42 43 /* 44 * Bind a fresh port to VIRQ @virq. 45 * Return allocated port. 46 */ 47 #define IOCTL_EVTCHN_BIND_VIRQ \ 48 _IOC(_IOC_NONE, 'E', 0, sizeof(struct ioctl_evtchn_bind_virq)) 49 struct ioctl_evtchn_bind_virq { 50 unsigned int virq; 51 }; 52 53 /* 54 * Bind a fresh port to remote <@remote_domain, @remote_port>. 55 * Return allocated port. 56 */ 57 #define IOCTL_EVTCHN_BIND_INTERDOMAIN \ 58 _IOC(_IOC_NONE, 'E', 1, sizeof(struct ioctl_evtchn_bind_interdomain)) 59 struct ioctl_evtchn_bind_interdomain { 60 unsigned int remote_domain, remote_port; 61 }; 62 63 /* 64 * Allocate a fresh port for binding to @remote_domain. 65 * Return allocated port. 66 */ 67 #define IOCTL_EVTCHN_BIND_UNBOUND_PORT \ 68 _IOC(_IOC_NONE, 'E', 2, sizeof(struct ioctl_evtchn_bind_unbound_port)) 69 struct ioctl_evtchn_bind_unbound_port { 70 unsigned int remote_domain; 71 }; 72 73 /* 74 * Unbind previously allocated @port. 75 */ 76 #define IOCTL_EVTCHN_UNBIND \ 77 _IOC(_IOC_NONE, 'E', 3, sizeof(struct ioctl_evtchn_unbind)) 78 struct ioctl_evtchn_unbind { 79 unsigned int port; 80 }; 81 82 /* 83 * Notify the given @port. 84 */ 85 #define IOCTL_EVTCHN_NOTIFY \ 86 _IOC(_IOC_NONE, 'E', 4, sizeof(struct ioctl_evtchn_notify)) 87 struct ioctl_evtchn_notify { 88 unsigned int port; 89 }; 90 91 #endif /* _XEN_SYS_EVTCHN_H */ 92 93 /* 94 * Local variables: 95 * c-file-style: "solaris" 96 * indent-tabs-mode: t 97 * c-indent-level: 8 98 * c-basic-offset: 8 99 * tab-width: 8 100 * End: 101 */ 102