1/*
2   This file is part of Valgrind, a dynamic binary instrumentation
3   framework.
4
5   Copyright (C) 2012-2017 Citrix
6
7   This program is free software; you can redistribute it and/or
8   modify it under the terms of the GNU General Public License as
9   published by the Free Software Foundation; either version 2 of the
10   License, or (at your option) any later version.
11
12   This program is distributed in the hope that it will be useful, but
13   WITHOUT ANY WARRANTY; without even the implied warranty of
14   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15   General Public License for more details.
16
17   You should have received a copy of the GNU General Public License
18   along with this program; if not, write to the Free Software
19   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
20   02111-1307, USA.
21
22   The GNU General Public License is contained in the file COPYING.
23*/
24
25/* Contributed by Andrew Cooper <andrew.cooper3@citrix.com>
26   and Ian Campbell <ian.campbell@citrix.com> */
27
28#ifndef __VKI_XEN_EVTCHN_H
29#define __VKI_XEN_EVTCHN_H
30
31#define VKI_XEN_EVTCHNOP_bind_interdomain 0
32#define VKI_XEN_EVTCHNOP_bind_virq        1
33#define VKI_XEN_EVTCHNOP_bind_pirq        2
34#define VKI_XEN_EVTCHNOP_close            3
35#define VKI_XEN_EVTCHNOP_send             4
36#define VKI_XEN_EVTCHNOP_status           5
37#define VKI_XEN_EVTCHNOP_alloc_unbound    6
38#define VKI_XEN_EVTCHNOP_bind_ipi         7
39#define VKI_XEN_EVTCHNOP_bind_vcpu        8
40#define VKI_XEN_EVTCHNOP_unmask           9
41#define VKI_XEN_EVTCHNOP_reset           10
42
43typedef vki_uint32_t vki_xen_evtchn_port_t;
44DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_evtchn_port_t);
45
46struct vki_xen_evtchn_alloc_unbound {
47    /* IN parameters */
48    vki_xen_domid_t dom, remote_dom;
49    /* OUT parameters */
50    vki_xen_evtchn_port_t port;
51};
52
53struct vki_xen_evtchn_op {
54    vki_uint32_t cmd; /* enum event_channel_op */
55    union {
56        struct vki_xen_evtchn_alloc_unbound    alloc_unbound;
57        //struct vki_xen_evtchn_bind_interdomain bind_interdomain;
58        //struct vki_xen_evtchn_bind_virq        bind_virq;
59        //struct vki_xen_evtchn_bind_pirq        bind_pirq;
60        //struct vki_xen_evtchn_bind_ipi         bind_ipi;
61        //struct vki_xen_evtchn_close            close;
62        //struct vki_xen_evtchn_send             send;
63        //struct vki_xen_evtchn_status           status;
64        //struct vki_xen_evtchn_bind_vcpu        bind_vcpu;
65        //struct vki_xen_evtchn_unmask           unmask;
66    } u;
67};
68
69#endif // __VKI_XEN_EVTCHN_H
70
71/*--------------------------------------------------------------------*/
72/*--- end                                                          ---*/
73/*--------------------------------------------------------------------*/
74