root / include / tapdisk-message.h @ abdb293f
History | View | Annotate | Download (6.6 kB)
1 | abdb293f | Chrysostomos Nanakos | /* Copyright (c) 2008, XenSource Inc.
|
---|---|---|---|
2 | abdb293f | Chrysostomos Nanakos | * All rights reserved.
|
3 | abdb293f | Chrysostomos Nanakos | *
|
4 | abdb293f | Chrysostomos Nanakos | * Redistribution and use in source and binary forms, with or without
|
5 | abdb293f | Chrysostomos Nanakos | * modification, are permitted provided that the following conditions are met:
|
6 | abdb293f | Chrysostomos Nanakos | * * Redistributions of source code must retain the above copyright
|
7 | abdb293f | Chrysostomos Nanakos | * notice, this list of conditions and the following disclaimer.
|
8 | abdb293f | Chrysostomos Nanakos | * * Redistributions in binary form must reproduce the above copyright
|
9 | abdb293f | Chrysostomos Nanakos | * notice, this list of conditions and the following disclaimer in the
|
10 | abdb293f | Chrysostomos Nanakos | * documentation and/or other materials provided with the distribution.
|
11 | abdb293f | Chrysostomos Nanakos | * * Neither the name of XenSource Inc. nor the names of its contributors
|
12 | abdb293f | Chrysostomos Nanakos | * may be used to endorse or promote products derived from this software
|
13 | abdb293f | Chrysostomos Nanakos | * without specific prior written permission.
|
14 | abdb293f | Chrysostomos Nanakos | *
|
15 | abdb293f | Chrysostomos Nanakos | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
16 | abdb293f | Chrysostomos Nanakos | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
17 | abdb293f | Chrysostomos Nanakos | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
18 | abdb293f | Chrysostomos Nanakos | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
19 | abdb293f | Chrysostomos Nanakos | * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
20 | abdb293f | Chrysostomos Nanakos | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
21 | abdb293f | Chrysostomos Nanakos | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
22 | abdb293f | Chrysostomos Nanakos | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
23 | abdb293f | Chrysostomos Nanakos | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
24 | abdb293f | Chrysostomos Nanakos | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
25 | abdb293f | Chrysostomos Nanakos | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
26 | abdb293f | Chrysostomos Nanakos | */
|
27 | abdb293f | Chrysostomos Nanakos | #ifndef _TAPDISK_MESSAGE_H_
|
28 | abdb293f | Chrysostomos Nanakos | #define _TAPDISK_MESSAGE_H_
|
29 | abdb293f | Chrysostomos Nanakos | |
30 | abdb293f | Chrysostomos Nanakos | #include <inttypes.h> |
31 | abdb293f | Chrysostomos Nanakos | #include <sys/types.h> |
32 | abdb293f | Chrysostomos Nanakos | |
33 | abdb293f | Chrysostomos Nanakos | #define TAPDISK_MESSAGE_MAX_PATH_LENGTH 256 |
34 | abdb293f | Chrysostomos Nanakos | #define TAPDISK_MESSAGE_STRING_LENGTH 256 |
35 | abdb293f | Chrysostomos Nanakos | |
36 | abdb293f | Chrysostomos Nanakos | #define TAPDISK_MESSAGE_MAX_MINORS \
|
37 | abdb293f | Chrysostomos Nanakos | ((TAPDISK_MESSAGE_MAX_PATH_LENGTH / sizeof(int)) - 1) |
38 | abdb293f | Chrysostomos Nanakos | |
39 | abdb293f | Chrysostomos Nanakos | #define TAPDISK_MESSAGE_FLAG_SHARED 0x001 |
40 | abdb293f | Chrysostomos Nanakos | #define TAPDISK_MESSAGE_FLAG_RDONLY 0x002 |
41 | abdb293f | Chrysostomos Nanakos | #define TAPDISK_MESSAGE_FLAG_ADD_CACHE 0x004 |
42 | abdb293f | Chrysostomos Nanakos | #define TAPDISK_MESSAGE_FLAG_VHD_INDEX 0x008 |
43 | abdb293f | Chrysostomos Nanakos | #define TAPDISK_MESSAGE_FLAG_LOG_DIRTY 0x010 |
44 | abdb293f | Chrysostomos Nanakos | #define TAPDISK_MESSAGE_FLAG_ADD_LCACHE 0x020 |
45 | abdb293f | Chrysostomos Nanakos | #define TAPDISK_MESSAGE_FLAG_REUSE_PRT 0x040 |
46 | abdb293f | Chrysostomos Nanakos | #define TAPDISK_MESSAGE_FLAG_SECONDARY 0x080 |
47 | abdb293f | Chrysostomos Nanakos | #define TAPDISK_MESSAGE_FLAG_STANDBY 0x100 |
48 | abdb293f | Chrysostomos Nanakos | |
49 | abdb293f | Chrysostomos Nanakos | typedef struct tapdisk_message tapdisk_message_t; |
50 | abdb293f | Chrysostomos Nanakos | typedef uint32_t tapdisk_message_flag_t;
|
51 | abdb293f | Chrysostomos Nanakos | typedef struct tapdisk_message_image tapdisk_message_image_t; |
52 | abdb293f | Chrysostomos Nanakos | typedef struct tapdisk_message_params tapdisk_message_params_t; |
53 | abdb293f | Chrysostomos Nanakos | typedef struct tapdisk_message_string tapdisk_message_string_t; |
54 | abdb293f | Chrysostomos Nanakos | typedef struct tapdisk_message_response tapdisk_message_response_t; |
55 | abdb293f | Chrysostomos Nanakos | typedef struct tapdisk_message_minors tapdisk_message_minors_t; |
56 | abdb293f | Chrysostomos Nanakos | typedef struct tapdisk_message_list tapdisk_message_list_t; |
57 | abdb293f | Chrysostomos Nanakos | typedef struct tapdisk_message_stat tapdisk_message_stat_t; |
58 | abdb293f | Chrysostomos Nanakos | |
59 | abdb293f | Chrysostomos Nanakos | struct tapdisk_message_params {
|
60 | abdb293f | Chrysostomos Nanakos | tapdisk_message_flag_t flags; |
61 | abdb293f | Chrysostomos Nanakos | |
62 | abdb293f | Chrysostomos Nanakos | uint32_t devnum; |
63 | abdb293f | Chrysostomos Nanakos | uint32_t domid; |
64 | abdb293f | Chrysostomos Nanakos | char path[TAPDISK_MESSAGE_MAX_PATH_LENGTH];
|
65 | abdb293f | Chrysostomos Nanakos | uint32_t prt_devnum; |
66 | abdb293f | Chrysostomos Nanakos | char secondary[TAPDISK_MESSAGE_MAX_PATH_LENGTH];
|
67 | abdb293f | Chrysostomos Nanakos | }; |
68 | abdb293f | Chrysostomos Nanakos | |
69 | abdb293f | Chrysostomos Nanakos | struct tapdisk_message_image {
|
70 | abdb293f | Chrysostomos Nanakos | uint64_t sectors; |
71 | abdb293f | Chrysostomos Nanakos | uint32_t sector_size; |
72 | abdb293f | Chrysostomos Nanakos | uint32_t info; |
73 | abdb293f | Chrysostomos Nanakos | }; |
74 | abdb293f | Chrysostomos Nanakos | |
75 | abdb293f | Chrysostomos Nanakos | struct tapdisk_message_string {
|
76 | abdb293f | Chrysostomos Nanakos | char text[TAPDISK_MESSAGE_STRING_LENGTH];
|
77 | abdb293f | Chrysostomos Nanakos | }; |
78 | abdb293f | Chrysostomos Nanakos | |
79 | abdb293f | Chrysostomos Nanakos | struct tapdisk_message_response {
|
80 | abdb293f | Chrysostomos Nanakos | int error;
|
81 | abdb293f | Chrysostomos Nanakos | char message[TAPDISK_MESSAGE_STRING_LENGTH];
|
82 | abdb293f | Chrysostomos Nanakos | }; |
83 | abdb293f | Chrysostomos Nanakos | |
84 | abdb293f | Chrysostomos Nanakos | struct tapdisk_message_minors {
|
85 | abdb293f | Chrysostomos Nanakos | int count;
|
86 | abdb293f | Chrysostomos Nanakos | int list[TAPDISK_MESSAGE_MAX_MINORS];
|
87 | abdb293f | Chrysostomos Nanakos | }; |
88 | abdb293f | Chrysostomos Nanakos | |
89 | abdb293f | Chrysostomos Nanakos | struct tapdisk_message_list {
|
90 | abdb293f | Chrysostomos Nanakos | int count;
|
91 | abdb293f | Chrysostomos Nanakos | int minor;
|
92 | abdb293f | Chrysostomos Nanakos | int state;
|
93 | abdb293f | Chrysostomos Nanakos | char path[TAPDISK_MESSAGE_MAX_PATH_LENGTH];
|
94 | abdb293f | Chrysostomos Nanakos | }; |
95 | abdb293f | Chrysostomos Nanakos | |
96 | abdb293f | Chrysostomos Nanakos | struct tapdisk_message_stat {
|
97 | abdb293f | Chrysostomos Nanakos | uint16_t type; |
98 | abdb293f | Chrysostomos Nanakos | uint16_t cookie; |
99 | abdb293f | Chrysostomos Nanakos | size_t length; |
100 | abdb293f | Chrysostomos Nanakos | }; |
101 | abdb293f | Chrysostomos Nanakos | |
102 | abdb293f | Chrysostomos Nanakos | |
103 | abdb293f | Chrysostomos Nanakos | struct tapdisk_message {
|
104 | abdb293f | Chrysostomos Nanakos | uint16_t type; |
105 | abdb293f | Chrysostomos Nanakos | uint16_t cookie; |
106 | abdb293f | Chrysostomos Nanakos | |
107 | abdb293f | Chrysostomos Nanakos | union {
|
108 | abdb293f | Chrysostomos Nanakos | pid_t tapdisk_pid; |
109 | abdb293f | Chrysostomos Nanakos | tapdisk_message_image_t image; |
110 | abdb293f | Chrysostomos Nanakos | tapdisk_message_params_t params; |
111 | abdb293f | Chrysostomos Nanakos | tapdisk_message_string_t string; |
112 | abdb293f | Chrysostomos Nanakos | tapdisk_message_minors_t minors; |
113 | abdb293f | Chrysostomos Nanakos | tapdisk_message_response_t response; |
114 | abdb293f | Chrysostomos Nanakos | tapdisk_message_list_t list; |
115 | abdb293f | Chrysostomos Nanakos | tapdisk_message_stat_t info; |
116 | abdb293f | Chrysostomos Nanakos | } u; |
117 | abdb293f | Chrysostomos Nanakos | }; |
118 | abdb293f | Chrysostomos Nanakos | |
119 | abdb293f | Chrysostomos Nanakos | enum tapdisk_message_id {
|
120 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_ERROR = 1,
|
121 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_RUNTIME_ERROR, |
122 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_PID, |
123 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_PID_RSP, |
124 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_ATTACH, |
125 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_ATTACH_RSP, |
126 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_OPEN, |
127 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_OPEN_RSP, |
128 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_PAUSE, |
129 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_PAUSE_RSP, |
130 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_RESUME, |
131 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_RESUME_RSP, |
132 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_CLOSE, |
133 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_CLOSE_RSP, |
134 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_DETACH, |
135 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_DETACH_RSP, |
136 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_LIST_MINORS, |
137 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_LIST_MINORS_RSP, |
138 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_LIST, |
139 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_LIST_RSP, |
140 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_STATS, |
141 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_STATS_RSP, |
142 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_FORCE_SHUTDOWN, |
143 | abdb293f | Chrysostomos Nanakos | TAPDISK_MESSAGE_EXIT, |
144 | abdb293f | Chrysostomos Nanakos | }; |
145 | abdb293f | Chrysostomos Nanakos | |
146 | abdb293f | Chrysostomos Nanakos | #define TAPDISK_MESSAGE_MAX TAPDISK_MESSAGE_EXIT
|
147 | abdb293f | Chrysostomos Nanakos | |
148 | abdb293f | Chrysostomos Nanakos | static inline char * |
149 | abdb293f | Chrysostomos Nanakos | tapdisk_message_name(enum tapdisk_message_id id)
|
150 | abdb293f | Chrysostomos Nanakos | { |
151 | abdb293f | Chrysostomos Nanakos | switch (id) {
|
152 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_ERROR:
|
153 | abdb293f | Chrysostomos Nanakos | return "error"; |
154 | abdb293f | Chrysostomos Nanakos | |
155 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_PID:
|
156 | abdb293f | Chrysostomos Nanakos | return "pid"; |
157 | abdb293f | Chrysostomos Nanakos | |
158 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_PID_RSP:
|
159 | abdb293f | Chrysostomos Nanakos | return "pid response"; |
160 | abdb293f | Chrysostomos Nanakos | |
161 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_OPEN:
|
162 | abdb293f | Chrysostomos Nanakos | return "open"; |
163 | abdb293f | Chrysostomos Nanakos | |
164 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_OPEN_RSP:
|
165 | abdb293f | Chrysostomos Nanakos | return "open response"; |
166 | abdb293f | Chrysostomos Nanakos | |
167 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_PAUSE:
|
168 | abdb293f | Chrysostomos Nanakos | return "pause"; |
169 | abdb293f | Chrysostomos Nanakos | |
170 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_PAUSE_RSP:
|
171 | abdb293f | Chrysostomos Nanakos | return "pause response"; |
172 | abdb293f | Chrysostomos Nanakos | |
173 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_RESUME:
|
174 | abdb293f | Chrysostomos Nanakos | return "resume"; |
175 | abdb293f | Chrysostomos Nanakos | |
176 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_RESUME_RSP:
|
177 | abdb293f | Chrysostomos Nanakos | return "resume response"; |
178 | abdb293f | Chrysostomos Nanakos | |
179 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_CLOSE:
|
180 | abdb293f | Chrysostomos Nanakos | return "close"; |
181 | abdb293f | Chrysostomos Nanakos | |
182 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_FORCE_SHUTDOWN:
|
183 | abdb293f | Chrysostomos Nanakos | return "force shutdown"; |
184 | abdb293f | Chrysostomos Nanakos | |
185 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_CLOSE_RSP:
|
186 | abdb293f | Chrysostomos Nanakos | return "close response"; |
187 | abdb293f | Chrysostomos Nanakos | |
188 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_ATTACH:
|
189 | abdb293f | Chrysostomos Nanakos | return "attach"; |
190 | abdb293f | Chrysostomos Nanakos | |
191 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_ATTACH_RSP:
|
192 | abdb293f | Chrysostomos Nanakos | return "attach response"; |
193 | abdb293f | Chrysostomos Nanakos | |
194 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_DETACH:
|
195 | abdb293f | Chrysostomos Nanakos | return "detach"; |
196 | abdb293f | Chrysostomos Nanakos | |
197 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_DETACH_RSP:
|
198 | abdb293f | Chrysostomos Nanakos | return "detach response"; |
199 | abdb293f | Chrysostomos Nanakos | |
200 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_LIST_MINORS:
|
201 | abdb293f | Chrysostomos Nanakos | return "list minors"; |
202 | abdb293f | Chrysostomos Nanakos | |
203 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_LIST_MINORS_RSP:
|
204 | abdb293f | Chrysostomos Nanakos | return "list minors response"; |
205 | abdb293f | Chrysostomos Nanakos | |
206 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_LIST:
|
207 | abdb293f | Chrysostomos Nanakos | return "list"; |
208 | abdb293f | Chrysostomos Nanakos | |
209 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_LIST_RSP:
|
210 | abdb293f | Chrysostomos Nanakos | return "list response"; |
211 | abdb293f | Chrysostomos Nanakos | |
212 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_STATS:
|
213 | abdb293f | Chrysostomos Nanakos | return "stats"; |
214 | abdb293f | Chrysostomos Nanakos | |
215 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_STATS_RSP:
|
216 | abdb293f | Chrysostomos Nanakos | return "stats response"; |
217 | abdb293f | Chrysostomos Nanakos | |
218 | abdb293f | Chrysostomos Nanakos | case TAPDISK_MESSAGE_EXIT:
|
219 | abdb293f | Chrysostomos Nanakos | return "exit"; |
220 | abdb293f | Chrysostomos Nanakos | |
221 | abdb293f | Chrysostomos Nanakos | default:
|
222 | abdb293f | Chrysostomos Nanakos | return "unknown"; |
223 | abdb293f | Chrysostomos Nanakos | } |
224 | abdb293f | Chrysostomos Nanakos | } |
225 | abdb293f | Chrysostomos Nanakos | |
226 | abdb293f | Chrysostomos Nanakos | #endif |