ia64/xen-unstable

view xen/include/public/hvm/ioreq.h @ 9137:eb24eb6bc341

Fix some warnings when compiling tools.

Signed-off-by: Xin Li <xin.b.li@intel.com>
author kaf24@firebug.cl.cam.ac.uk
date Sat Mar 04 10:25:05 2006 +0100 (2006-03-04)
parents b5bb9920bf48
children c1d53788a25e
line source
1 /*
2 * ioreq.h: I/O request definitions for device models
3 * Copyright (c) 2004, Intel Corporation.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms and conditions of the GNU General Public License,
7 * version 2, as published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along with
15 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
16 * Place - Suite 330, Boston, MA 02111-1307 USA.
17 *
18 */
20 #ifndef _IOREQ_H_
21 #define _IOREQ_H_
23 #define IOREQ_READ 1
24 #define IOREQ_WRITE 0
26 #define STATE_INVALID 0
27 #define STATE_IOREQ_READY 1
28 #define STATE_IOREQ_INPROCESS 2
29 #define STATE_IORESP_READY 3
30 #define STATE_IORESP_HOOK 4
32 #define IOREQ_TYPE_PIO 0 /* pio */
33 #define IOREQ_TYPE_COPY 1 /* mmio ops */
34 #define IOREQ_TYPE_AND 2
35 #define IOREQ_TYPE_OR 3
36 #define IOREQ_TYPE_XOR 4
38 /*
39 * VMExit dispatcher should cooperate with instruction decoder to
40 * prepare this structure and notify service OS and DM by sending
41 * virq
42 */
43 typedef struct {
44 uint64_t addr; /* physical address */
45 uint64_t size; /* size in bytes */
46 uint64_t count; /* for rep prefixes */
47 union {
48 uint64_t data; /* data */
49 void *pdata; /* pointer to data */
50 } u;
51 uint8_t state:4;
52 uint8_t pdata_valid:1; /* if 1, use pdata above */
53 uint8_t dir:1; /* 1=read, 0=write */
54 uint8_t df:1;
55 uint8_t type; /* I/O type */
56 uint64_t io_count; /* How many IO done on a vcpu */
57 } ioreq_t;
59 #define MAX_VECTOR 256
60 #define BITS_PER_BYTE 8
61 #define INTR_LEN (MAX_VECTOR/(BITS_PER_BYTE * sizeof(uint64_t)))
62 #define INTR_LEN_32 (MAX_VECTOR/(BITS_PER_BYTE * sizeof(uint32_t)))
64 typedef struct {
65 uint16_t pic_elcr;
66 uint16_t pic_irr;
67 uint16_t pic_last_irr;
68 uint16_t pic_clear_irr;
69 } global_iodata_t;
71 typedef struct {
72 ioreq_t vp_ioreq;
73 /* Event channel port */
74 unsigned int vp_eport; /* VMX vcpu uses this to notify DM */
75 unsigned int dm_eport; /* DM uses this to notify VMX vcpu */
76 } vcpu_iodata_t;
78 typedef struct {
79 global_iodata_t sp_global;
80 vcpu_iodata_t vcpu_iodata[1];
81 } shared_iopage_t;
83 #endif /* _IOREQ_H_ */
85 /*
86 * Local variables:
87 * mode: C
88 * c-set-style: "BSD"
89 * c-basic-offset: 4
90 * tab-width: 4
91 * indent-tabs-mode: nil
92 * End:
93 */