~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/xen/interface/io/xs_wire.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: MIT */
  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_CONTROL,
 14 #define XS_DEBUG XS_CONTROL
 15     XS_DIRECTORY,
 16     XS_READ,
 17     XS_GET_PERMS,
 18     XS_WATCH,
 19     XS_UNWATCH,
 20     XS_TRANSACTION_START,
 21     XS_TRANSACTION_END,
 22     XS_INTRODUCE,
 23     XS_RELEASE,
 24     XS_GET_DOMAIN_PATH,
 25     XS_WRITE,
 26     XS_MKDIR,
 27     XS_RM,
 28     XS_SET_PERMS,
 29     XS_WATCH_EVENT,
 30     XS_ERROR,
 31     XS_IS_DOMAIN_INTRODUCED,
 32     XS_RESUME,
 33     XS_SET_TARGET,
 34     /* XS_RESTRICT has been removed */
 35     XS_RESET_WATCHES = XS_SET_TARGET + 2,
 36     XS_DIRECTORY_PART,
 37 
 38     XS_TYPE_COUNT,      /* Number of valid types. */
 39 
 40     XS_INVALID = 0xffff /* Guaranteed to remain an invalid type */
 41 };
 42 
 43 #define XS_WRITE_NONE "NONE"
 44 #define XS_WRITE_CREATE "CREATE"
 45 #define XS_WRITE_CREATE_EXCL "CREATE|EXCL"
 46 
 47 /* We hand errors as strings, for portability. */
 48 struct xsd_errors
 49 {
 50     int errnum;
 51     const char *errstring;
 52 };
 53 #define XSD_ERROR(x) { x, #x }
 54 static struct xsd_errors xsd_errors[] __attribute__((unused)) = {
 55     XSD_ERROR(EINVAL),
 56     XSD_ERROR(EACCES),
 57     XSD_ERROR(EEXIST),
 58     XSD_ERROR(EISDIR),
 59     XSD_ERROR(ENOENT),
 60     XSD_ERROR(ENOMEM),
 61     XSD_ERROR(ENOSPC),
 62     XSD_ERROR(EIO),
 63     XSD_ERROR(ENOTEMPTY),
 64     XSD_ERROR(ENOSYS),
 65     XSD_ERROR(EROFS),
 66     XSD_ERROR(EBUSY),
 67     XSD_ERROR(EAGAIN),
 68     XSD_ERROR(EISCONN),
 69     XSD_ERROR(E2BIG)
 70 };
 71 
 72 struct xsd_sockmsg
 73 {
 74     uint32_t type;  /* XS_??? */
 75     uint32_t req_id;/* Request identifier, echoed in daemon's response.  */
 76     uint32_t tx_id; /* Transaction id (0 if not related to a transaction). */
 77     uint32_t len;   /* Length of data following this. */
 78 
 79     /* Generally followed by nul-terminated string(s). */
 80 };
 81 
 82 enum xs_watch_type
 83 {
 84     XS_WATCH_PATH = 0,
 85     XS_WATCH_TOKEN
 86 };
 87 
 88 /* Inter-domain shared memory communications. */
 89 #define XENSTORE_RING_SIZE 1024
 90 typedef uint32_t XENSTORE_RING_IDX;
 91 #define MASK_XENSTORE_IDX(idx) ((idx) & (XENSTORE_RING_SIZE-1))
 92 struct xenstore_domain_interface {
 93     char req[XENSTORE_RING_SIZE]; /* Requests to xenstore daemon. */
 94     char rsp[XENSTORE_RING_SIZE]; /* Replies and async watch events. */
 95     XENSTORE_RING_IDX req_cons, req_prod;
 96     XENSTORE_RING_IDX rsp_cons, rsp_prod;
 97     uint32_t server_features; /* Bitmap of features supported by the server */
 98     uint32_t connection;
 99     uint32_t error;
100 };
101 
102 /* Violating this is very bad.  See docs/misc/xenstore.txt. */
103 #define XENSTORE_PAYLOAD_MAX 4096
104 
105 /* Violating these just gets you an error back */
106 #define XENSTORE_ABS_PATH_MAX 3072
107 #define XENSTORE_REL_PATH_MAX 2048
108 
109 /* The ability to reconnect a ring */
110 #define XENSTORE_SERVER_FEATURE_RECONNECTION 1
111 /* The presence of the "error" field in the ring page */
112 #define XENSTORE_SERVER_FEATURE_ERROR        2
113 
114 /* Valid values for the connection field */
115 #define XENSTORE_CONNECTED 0 /* the steady-state */
116 #define XENSTORE_RECONNECT 1 /* guest has initiated a reconnect */
117 
118 /* Valid values for the error field */
119 #define XENSTORE_ERROR_NONE    0 /* No error */
120 #define XENSTORE_ERROR_COMM    1 /* Communication problem */
121 #define XENSTORE_ERROR_RINGIDX 2 /* Invalid ring index */
122 #define XENSTORE_ERROR_PROTO   3 /* Protocol violation (payload too long) */
123 
124 #endif /* _XS_WIRE_H */
125 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php