|
|
1.1 ! root 1: /* ! 2: * Details of the "wire" protocol between Xen Store Daemon and client ! 3: * library or guest kernel. ! 4: * ! 5: * Permission is hereby granted, free of charge, to any person obtaining a copy ! 6: * of this software and associated documentation files (the "Software"), to ! 7: * deal in the Software without restriction, including without limitation the ! 8: * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or ! 9: * sell copies of the Software, and to permit persons to whom the Software is ! 10: * furnished to do so, subject to the following conditions: ! 11: * ! 12: * The above copyright notice and this permission notice shall be included in ! 13: * all copies or substantial portions of the Software. ! 14: * ! 15: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ! 16: * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ! 17: * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ! 18: * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ! 19: * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ! 20: * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ! 21: * DEALINGS IN THE SOFTWARE. ! 22: * ! 23: * Copyright (C) 2005 Rusty Russell IBM Corporation ! 24: */ ! 25: ! 26: #ifndef _XS_WIRE_H ! 27: #define _XS_WIRE_H ! 28: ! 29: enum xsd_sockmsg_type ! 30: { ! 31: XS_DEBUG, ! 32: XS_DIRECTORY, ! 33: XS_READ, ! 34: XS_GET_PERMS, ! 35: XS_WATCH, ! 36: XS_UNWATCH, ! 37: XS_TRANSACTION_START, ! 38: XS_TRANSACTION_END, ! 39: XS_INTRODUCE, ! 40: XS_RELEASE, ! 41: XS_GET_DOMAIN_PATH, ! 42: XS_WRITE, ! 43: XS_MKDIR, ! 44: XS_RM, ! 45: XS_SET_PERMS, ! 46: XS_WATCH_EVENT, ! 47: XS_ERROR, ! 48: XS_IS_DOMAIN_INTRODUCED, ! 49: XS_RESUME, ! 50: XS_SET_TARGET ! 51: }; ! 52: ! 53: #define XS_WRITE_NONE "NONE" ! 54: #define XS_WRITE_CREATE "CREATE" ! 55: #define XS_WRITE_CREATE_EXCL "CREATE|EXCL" ! 56: ! 57: #ifdef linux_specific ! 58: /* We hand errors as strings, for portability. */ ! 59: struct xsd_errors ! 60: { ! 61: int errnum; ! 62: const char *errstring; ! 63: }; ! 64: #define XSD_ERROR(x) { x, #x } ! 65: /* LINTED: static unused */ ! 66: static struct xsd_errors xsd_errors[] ! 67: #if defined(__GNUC__) ! 68: __attribute__((unused)) ! 69: #endif ! 70: = { ! 71: XSD_ERROR(EINVAL), ! 72: XSD_ERROR(EACCES), ! 73: XSD_ERROR(EEXIST), ! 74: XSD_ERROR(EISDIR), ! 75: XSD_ERROR(ENOENT), ! 76: XSD_ERROR(ENOMEM), ! 77: XSD_ERROR(ENOSPC), ! 78: XSD_ERROR(EIO), ! 79: XSD_ERROR(ENOTEMPTY), ! 80: XSD_ERROR(ENOSYS), ! 81: XSD_ERROR(EROFS), ! 82: XSD_ERROR(EBUSY), ! 83: XSD_ERROR(EAGAIN), ! 84: XSD_ERROR(EISCONN) ! 85: }; ! 86: #endif ! 87: ! 88: struct xsd_sockmsg ! 89: { ! 90: uint32_t type; /* XS_??? */ ! 91: uint32_t req_id;/* Request identifier, echoed in daemon's response. */ ! 92: uint32_t tx_id; /* Transaction id (0 if not related to a transaction). */ ! 93: uint32_t len; /* Length of data following this. */ ! 94: ! 95: /* Generally followed by nul-terminated string(s). */ ! 96: }; ! 97: ! 98: enum xs_watch_type ! 99: { ! 100: XS_WATCH_PATH = 0, ! 101: XS_WATCH_TOKEN ! 102: }; ! 103: ! 104: /* Inter-domain shared memory communications. */ ! 105: #define XENSTORE_RING_SIZE 1024 ! 106: typedef uint32_t XENSTORE_RING_IDX; ! 107: #define MASK_XENSTORE_IDX(idx) ((idx) & (XENSTORE_RING_SIZE-1)) ! 108: struct xenstore_domain_interface { ! 109: char req[XENSTORE_RING_SIZE]; /* Requests to xenstore daemon. */ ! 110: char rsp[XENSTORE_RING_SIZE]; /* Replies and async watch events. */ ! 111: XENSTORE_RING_IDX req_cons, req_prod; ! 112: XENSTORE_RING_IDX rsp_cons, rsp_prod; ! 113: }; ! 114: ! 115: /* Violating this is very bad. See docs/misc/xenstore.txt. */ ! 116: #define XENSTORE_PAYLOAD_MAX 4096 ! 117: ! 118: /* Violating these just gets you an error back */ ! 119: #define XENSTORE_ABS_PATH_MAX 3072 ! 120: #define XENSTORE_REL_PATH_MAX 2048 ! 121: ! 122: #endif /* _XS_WIRE_H */ ! 123: ! 124: /* ! 125: * Local variables: ! 126: * mode: C ! 127: * c-set-style: "BSD" ! 128: * c-basic-offset: 4 ! 129: * tab-width: 4 ! 130: * indent-tabs-mode: nil ! 131: * End: ! 132: */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.