]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/Include/IndustryStandard/Xen/io/xs_wire.h
OvmfPkg: Apply uncrustify changes
[mirror_edk2.git] / OvmfPkg / Include / IndustryStandard / Xen / io / xs_wire.h
CommitLineData
a9090a94
AP
1/*\r
2 * Details of the "wire" protocol between Xen Store Daemon and client\r
3 * library or guest kernel.\r
4 *\r
6f21d772 5 * SPDX-License-Identifier: MIT\r
a9090a94
AP
6 *\r
7 * Copyright (C) 2005 Rusty Russell IBM Corporation\r
8 */\r
9\r
10#ifndef _XS_WIRE_H\r
11#define _XS_WIRE_H\r
12\r
ac0a286f
MK
13enum xsd_sockmsg_type {\r
14 XS_DEBUG,\r
15 XS_DIRECTORY,\r
16 XS_READ,\r
17 XS_GET_PERMS,\r
18 XS_WATCH,\r
19 XS_UNWATCH,\r
20 XS_TRANSACTION_START,\r
21 XS_TRANSACTION_END,\r
22 XS_INTRODUCE,\r
23 XS_RELEASE,\r
24 XS_GET_DOMAIN_PATH,\r
25 XS_WRITE,\r
26 XS_MKDIR,\r
27 XS_RM,\r
28 XS_SET_PERMS,\r
29 XS_WATCH_EVENT,\r
30 XS_ERROR,\r
31 XS_IS_DOMAIN_INTRODUCED,\r
32 XS_RESUME,\r
33 XS_SET_TARGET,\r
34 XS_RESTRICT,\r
35 XS_RESET_WATCHES,\r
36\r
37 XS_INVALID = 0xffff /* Guaranteed to remain an invalid type */\r
a9090a94
AP
38};\r
39\r
ac0a286f
MK
40#define XS_WRITE_NONE "NONE"\r
41#define XS_WRITE_CREATE "CREATE"\r
42#define XS_WRITE_CREATE_EXCL "CREATE|EXCL"\r
a9090a94
AP
43\r
44/* We hand errors as strings, for portability. */\r
ac0a286f
MK
45struct xsd_errors {\r
46 INT32 errnum;\r
47 const CHAR8 *errstring;\r
a9090a94 48};\r
ac0a286f 49\r
a9090a94 50#ifdef EINVAL\r
ac0a286f 51#define XSD_ERROR(x) { x, #x }\r
a9090a94
AP
52/* LINTED: static unused */\r
53static struct xsd_errors xsd_errors[]\r
ac0a286f
MK
54 #if defined (__GNUC__)\r
55__attribute__ ((unused))\r
56 #endif\r
57 = {\r
58 XSD_ERROR (EINVAL),\r
59 XSD_ERROR (EACCES),\r
60 XSD_ERROR (EEXIST),\r
61 XSD_ERROR (EISDIR),\r
62 XSD_ERROR (ENOENT),\r
63 XSD_ERROR (ENOMEM),\r
64 XSD_ERROR (ENOSPC),\r
65 XSD_ERROR (EIO),\r
66 XSD_ERROR (ENOTEMPTY),\r
67 XSD_ERROR (ENOSYS),\r
68 XSD_ERROR (EROFS),\r
69 XSD_ERROR (EBUSY),\r
70 XSD_ERROR (EAGAIN),\r
71 XSD_ERROR (EISCONN),\r
72 XSD_ERROR (E2BIG)\r
73 };\r
a9090a94
AP
74#endif\r
75\r
ac0a286f
MK
76struct xsd_sockmsg {\r
77 UINT32 type; /* XS_??? */\r
78 UINT32 req_id; /* Request identifier, echoed in daemon's response. */\r
79 UINT32 tx_id; /* Transaction id (0 if not related to a transaction). */\r
80 UINT32 len; /* Length of data following this. */\r
a9090a94 81\r
ac0a286f 82 /* Generally followed by nul-terminated string(s). */\r
a9090a94
AP
83};\r
84\r
ac0a286f
MK
85enum xs_watch_type {\r
86 XS_WATCH_PATH = 0,\r
87 XS_WATCH_TOKEN\r
a9090a94
AP
88};\r
89\r
90/*\r
91 * `incontents 150 xenstore_struct XenStore wire protocol.\r
92 *\r
93 * Inter-domain shared memory communications. */\r
ac0a286f 94#define XENSTORE_RING_SIZE 1024\r
a9090a94 95typedef UINT32 XENSTORE_RING_IDX;\r
ac0a286f 96#define MASK_XENSTORE_IDX(idx) ((idx) & (XENSTORE_RING_SIZE-1))\r
a9090a94 97struct xenstore_domain_interface {\r
ac0a286f
MK
98 CHAR8 req[XENSTORE_RING_SIZE]; /* Requests to xenstore daemon. */\r
99 CHAR8 rsp[XENSTORE_RING_SIZE]; /* Replies and async watch events. */\r
100 XENSTORE_RING_IDX req_cons, req_prod;\r
101 XENSTORE_RING_IDX rsp_cons, rsp_prod;\r
102 UINT32 server_features; /* Bitmap of features supported by the server */\r
103 UINT32 connection;\r
a9090a94
AP
104};\r
105\r
106/* Violating this is very bad. See docs/misc/xenstore.txt. */\r
ac0a286f 107#define XENSTORE_PAYLOAD_MAX 4096\r
a9090a94
AP
108\r
109/* Violating these just gets you an error back */\r
ac0a286f
MK
110#define XENSTORE_ABS_PATH_MAX 3072\r
111#define XENSTORE_REL_PATH_MAX 2048\r
a9090a94
AP
112\r
113/* The ability to reconnect a ring */\r
ac0a286f 114#define XENSTORE_SERVER_FEATURE_RECONNECTION 1\r
a9090a94
AP
115\r
116/* Valid values for the connection field */\r
ac0a286f
MK
117#define XENSTORE_CONNECTED 0 /* the steady-state */\r
118#define XENSTORE_RECONNECT 1 /* guest has initiated a reconnect */\r
a9090a94
AP
119\r
120#endif /* _XS_WIRE_H */\r
121\r
122/*\r
123 * Local variables:\r
124 * mode: C\r
125 * c-file-style: "BSD"\r
126 * c-basic-offset: 4\r
127 * tab-width: 4\r
128 * indent-tabs-mode: nil\r
129 * End:\r
130 */\r