- 2.6.17 port work build breaks, but the patch set is relativly stable
[linux-flexiantxendom0-3.2.10.git] / include / xen / interface / physdev.h
1
2 #ifndef __XEN_PUBLIC_PHYSDEV_H__
3 #define __XEN_PUBLIC_PHYSDEV_H__
4
5 /* Commands to HYPERVISOR_physdev_op() */
6 #define PHYSDEVOP_IRQ_UNMASK_NOTIFY     4
7 #define PHYSDEVOP_IRQ_STATUS_QUERY      5
8 #define PHYSDEVOP_SET_IOPL              6
9 #define PHYSDEVOP_SET_IOBITMAP          7
10 #define PHYSDEVOP_APIC_READ             8
11 #define PHYSDEVOP_APIC_WRITE            9
12 #define PHYSDEVOP_ASSIGN_VECTOR         10
13
14 typedef struct physdevop_irq_status_query {
15     /* IN */
16     uint32_t irq;
17     /* OUT */
18 /* Need to call PHYSDEVOP_IRQ_UNMASK_NOTIFY when the IRQ has been serviced? */
19 #define PHYSDEVOP_IRQ_NEEDS_UNMASK_NOTIFY (1<<0)
20     uint32_t flags;
21 } physdevop_irq_status_query_t;
22
23 typedef struct physdevop_set_iopl {
24     /* IN */
25     uint32_t iopl;
26 } physdevop_set_iopl_t;
27
28 typedef struct physdevop_set_iobitmap {
29     /* IN */
30     uint8_t *bitmap;
31     uint32_t nr_ports;
32 } physdevop_set_iobitmap_t;
33
34 typedef struct physdevop_apic {
35     /* IN */
36     unsigned long apic_physbase;
37     uint32_t reg;
38     /* IN or OUT */
39     uint32_t value;
40 } physdevop_apic_t;
41
42 typedef struct physdevop_irq {
43     /* IN */
44     uint32_t irq;
45     /* OUT */
46     uint32_t vector;
47 } physdevop_irq_t;
48
49 typedef struct physdev_op {
50     uint32_t cmd;
51     union {
52         physdevop_irq_status_query_t      irq_status_query;
53         physdevop_set_iopl_t              set_iopl;
54         physdevop_set_iobitmap_t          set_iobitmap;
55         physdevop_apic_t                  apic_op;
56         physdevop_irq_t                   irq_op;
57     } u;
58 } physdev_op_t;
59 DEFINE_GUEST_HANDLE(physdev_op_t);
60
61 #endif /* __XEN_PUBLIC_PHYSDEV_H__ */
62
63 /*
64  * Local variables:
65  * mode: C
66  * c-set-style: "BSD"
67  * c-basic-offset: 4
68  * tab-width: 4
69  * indent-tabs-mode: nil
70  * End:
71  */