1843e1988Sjohnlev /****************************************************************************** 2843e1988Sjohnlev * evtchn.h 3*2d6eb4a5SToomas Soome * 4843e1988Sjohnlev * Interface to /dev/xen/evtchn. 5*2d6eb4a5SToomas Soome * 6843e1988Sjohnlev * Copyright (c) 2003-2005, K A Fraser 7*2d6eb4a5SToomas Soome * 8843e1988Sjohnlev * This file may be distributed separately from the Linux kernel, or 9843e1988Sjohnlev * incorporated into other software packages, subject to the following license: 10*2d6eb4a5SToomas Soome * 11843e1988Sjohnlev * Permission is hereby granted, free of charge, to any person obtaining a copy 12843e1988Sjohnlev * of this source file (the "Software"), to deal in the Software without 13843e1988Sjohnlev * restriction, including without limitation the rights to use, copy, modify, 14843e1988Sjohnlev * merge, publish, distribute, sublicense, and/or sell copies of the Software, 15843e1988Sjohnlev * and to permit persons to whom the Software is furnished to do so, subject to 16843e1988Sjohnlev * the following conditions: 17*2d6eb4a5SToomas Soome * 18843e1988Sjohnlev * The above copyright notice and this permission notice shall be included in 19843e1988Sjohnlev * all copies or substantial portions of the Software. 20*2d6eb4a5SToomas Soome * 21843e1988Sjohnlev * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22843e1988Sjohnlev * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23843e1988Sjohnlev * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 24843e1988Sjohnlev * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 25843e1988Sjohnlev * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 26843e1988Sjohnlev * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 27843e1988Sjohnlev * IN THE SOFTWARE. 28843e1988Sjohnlev */ 29843e1988Sjohnlev 30843e1988Sjohnlev /* 31843e1988Sjohnlev * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 32843e1988Sjohnlev * Use is subject to license terms. 33843e1988Sjohnlev */ 34843e1988Sjohnlev 35843e1988Sjohnlev #ifndef _XEN_SYS_EVTCHN_H 36843e1988Sjohnlev #define _XEN_SYS_EVTCHN_H 37843e1988Sjohnlev 38843e1988Sjohnlev #define _IOC_NONE 0 39843e1988Sjohnlev #define _IOC(flag, letter, inum, size) ((letter) << 8 | (inum)) 40843e1988Sjohnlev 41843e1988Sjohnlev /* 42843e1988Sjohnlev * Bind a fresh port to VIRQ @virq. 43843e1988Sjohnlev * Return allocated port. 44843e1988Sjohnlev */ 45843e1988Sjohnlev #define IOCTL_EVTCHN_BIND_VIRQ \ 46843e1988Sjohnlev _IOC(_IOC_NONE, 'E', 0, sizeof(struct ioctl_evtchn_bind_virq)) 47843e1988Sjohnlev struct ioctl_evtchn_bind_virq { 48843e1988Sjohnlev unsigned int virq; 49843e1988Sjohnlev }; 50843e1988Sjohnlev 51843e1988Sjohnlev /* 52843e1988Sjohnlev * Bind a fresh port to remote <@remote_domain, @remote_port>. 53843e1988Sjohnlev * Return allocated port. 54843e1988Sjohnlev */ 55843e1988Sjohnlev #define IOCTL_EVTCHN_BIND_INTERDOMAIN \ 56843e1988Sjohnlev _IOC(_IOC_NONE, 'E', 1, sizeof(struct ioctl_evtchn_bind_interdomain)) 57843e1988Sjohnlev struct ioctl_evtchn_bind_interdomain { 58843e1988Sjohnlev unsigned int remote_domain, remote_port; 59843e1988Sjohnlev }; 60843e1988Sjohnlev 61843e1988Sjohnlev /* 62843e1988Sjohnlev * Allocate a fresh port for binding to @remote_domain. 63843e1988Sjohnlev * Return allocated port. 64843e1988Sjohnlev */ 65843e1988Sjohnlev #define IOCTL_EVTCHN_BIND_UNBOUND_PORT \ 66843e1988Sjohnlev _IOC(_IOC_NONE, 'E', 2, sizeof(struct ioctl_evtchn_bind_unbound_port)) 67843e1988Sjohnlev struct ioctl_evtchn_bind_unbound_port { 68843e1988Sjohnlev unsigned int remote_domain; 69843e1988Sjohnlev }; 70843e1988Sjohnlev 71843e1988Sjohnlev /* 72843e1988Sjohnlev * Unbind previously allocated @port. 73843e1988Sjohnlev */ 74843e1988Sjohnlev #define IOCTL_EVTCHN_UNBIND \ 75843e1988Sjohnlev _IOC(_IOC_NONE, 'E', 3, sizeof(struct ioctl_evtchn_unbind)) 76843e1988Sjohnlev struct ioctl_evtchn_unbind { 77843e1988Sjohnlev unsigned int port; 78843e1988Sjohnlev }; 79843e1988Sjohnlev 80843e1988Sjohnlev /* 81843e1988Sjohnlev * Notify the given @port. 82843e1988Sjohnlev */ 83843e1988Sjohnlev #define IOCTL_EVTCHN_NOTIFY \ 84843e1988Sjohnlev _IOC(_IOC_NONE, 'E', 4, sizeof(struct ioctl_evtchn_notify)) 85843e1988Sjohnlev struct ioctl_evtchn_notify { 86843e1988Sjohnlev unsigned int port; 87843e1988Sjohnlev }; 88843e1988Sjohnlev 89843e1988Sjohnlev #endif /* _XEN_SYS_EVTCHN_H */ 90843e1988Sjohnlev 91843e1988Sjohnlev /* 92843e1988Sjohnlev * Local variables: 93843e1988Sjohnlev * c-file-style: "solaris" 94843e1988Sjohnlev * indent-tabs-mode: t 95843e1988Sjohnlev * c-indent-level: 8 96843e1988Sjohnlev * c-basic-offset: 8 97843e1988Sjohnlev * tab-width: 8 98843e1988Sjohnlev * End: 99843e1988Sjohnlev */ 100