]>
Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
a42089dd JF |
2 | /* |
3 | * Details of the "wire" protocol between Xen Store Daemon and client | |
4 | * library or guest kernel. | |
5 | * Copyright (C) 2005 Rusty Russell IBM Corporation | |
6 | */ | |
7 | ||
8 | #ifndef _XS_WIRE_H | |
9 | #define _XS_WIRE_H | |
10 | ||
11 | enum xsd_sockmsg_type | |
12 | { | |
13 | XS_DEBUG, | |
14 | XS_DIRECTORY, | |
15 | XS_READ, | |
16 | XS_GET_PERMS, | |
17 | XS_WATCH, | |
18 | XS_UNWATCH, | |
19 | XS_TRANSACTION_START, | |
20 | XS_TRANSACTION_END, | |
21 | XS_INTRODUCE, | |
22 | XS_RELEASE, | |
23 | XS_GET_DOMAIN_PATH, | |
24 | XS_WRITE, | |
25 | XS_MKDIR, | |
26 | XS_RM, | |
27 | XS_SET_PERMS, | |
28 | XS_WATCH_EVENT, | |
29 | XS_ERROR, | |
3b082b25 OH |
30 | XS_IS_DOMAIN_INTRODUCED, |
31 | XS_RESUME, | |
32 | XS_SET_TARGET, | |
254d1a3f OH |
33 | XS_RESTRICT, |
34 | XS_RESET_WATCHES, | |
a42089dd JF |
35 | }; |
36 | ||
37 | #define XS_WRITE_NONE "NONE" | |
38 | #define XS_WRITE_CREATE "CREATE" | |
39 | #define XS_WRITE_CREATE_EXCL "CREATE|EXCL" | |
40 | ||
41 | /* We hand errors as strings, for portability. */ | |
42 | struct xsd_errors | |
43 | { | |
44 | int errnum; | |
45 | const char *errstring; | |
46 | }; | |
47 | #define XSD_ERROR(x) { x, #x } | |
48 | static struct xsd_errors xsd_errors[] __attribute__((unused)) = { | |
49 | XSD_ERROR(EINVAL), | |
50 | XSD_ERROR(EACCES), | |
51 | XSD_ERROR(EEXIST), | |
52 | XSD_ERROR(EISDIR), | |
53 | XSD_ERROR(ENOENT), | |
54 | XSD_ERROR(ENOMEM), | |
55 | XSD_ERROR(ENOSPC), | |
56 | XSD_ERROR(EIO), | |
57 | XSD_ERROR(ENOTEMPTY), | |
58 | XSD_ERROR(ENOSYS), | |
59 | XSD_ERROR(EROFS), | |
60 | XSD_ERROR(EBUSY), | |
61 | XSD_ERROR(EAGAIN), | |
62 | XSD_ERROR(EISCONN) | |
63 | }; | |
64 | ||
65 | struct xsd_sockmsg | |
66 | { | |
67 | uint32_t type; /* XS_??? */ | |
68 | uint32_t req_id;/* Request identifier, echoed in daemon's response. */ | |
69 | uint32_t tx_id; /* Transaction id (0 if not related to a transaction). */ | |
70 | uint32_t len; /* Length of data following this. */ | |
71 | ||
72 | /* Generally followed by nul-terminated string(s). */ | |
73 | }; | |
74 | ||
75 | enum xs_watch_type | |
76 | { | |
77 | XS_WATCH_PATH = 0, | |
78 | XS_WATCH_TOKEN | |
79 | }; | |
80 | ||
81 | /* Inter-domain shared memory communications. */ | |
82 | #define XENSTORE_RING_SIZE 1024 | |
83 | typedef uint32_t XENSTORE_RING_IDX; | |
84 | #define MASK_XENSTORE_IDX(idx) ((idx) & (XENSTORE_RING_SIZE-1)) | |
85 | struct xenstore_domain_interface { | |
86 | char req[XENSTORE_RING_SIZE]; /* Requests to xenstore daemon. */ | |
87 | char rsp[XENSTORE_RING_SIZE]; /* Replies and async watch events. */ | |
88 | XENSTORE_RING_IDX req_cons, req_prod; | |
89 | XENSTORE_RING_IDX rsp_cons, rsp_prod; | |
90 | }; | |
91 | ||
9e7860ce IC |
92 | /* Violating this is very bad. See docs/misc/xenstore.txt. */ |
93 | #define XENSTORE_PAYLOAD_MAX 4096 | |
94 | ||
a42089dd | 95 | #endif /* _XS_WIRE_H */ |