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