~ubuntu-branches/ubuntu/utopic/xen/utopic

« back to all changes in this revision

Viewing changes to xen/include/public/io/xs_wire.h

  • Committer: Bazaar Package Importer
  • Author(s): Bastian Blank
  • Date: 2010-05-06 15:47:38 UTC
  • mto: (1.3.1) (15.1.1 sid) (4.1.1 experimental)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20100506154738-agoz0rlafrh1fnq7
Tags: upstream-4.0.0
ImportĀ upstreamĀ versionĀ 4.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
/* We hand errors as strings, for portability. */
 
58
struct xsd_errors
 
59
{
 
60
    int errnum;
 
61
    const char *errstring;
 
62
};
 
63
#ifdef EINVAL
 
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
 */