Statistics
| Branch: | Revision:

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