Coverage Report

Created: 2017-10-25 09:10

/root/src/xen/xen/include/public/tmem.h
Line
Count
Source (jump to first uncovered line)
1
/******************************************************************************
2
 * tmem.h
3
 * 
4
 * Guest OS interface to Xen Transcendent Memory.
5
 * 
6
 * Permission is hereby granted, free of charge, to any person obtaining a copy
7
 * of this software and associated documentation files (the "Software"), to
8
 * deal in the Software without restriction, including without limitation the
9
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10
 * sell copies of the Software, and to permit persons to whom the Software is
11
 * furnished to do so, subject to the following conditions:
12
 *
13
 * The above copyright notice and this permission notice shall be included in
14
 * all copies or substantial portions of the Software.
15
 *
16
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22
 * DEALINGS IN THE SOFTWARE.
23
 *
24
 * Copyright (c) 2004, K A Fraser
25
 */
26
27
#ifndef __XEN_PUBLIC_TMEM_H__
28
#define __XEN_PUBLIC_TMEM_H__
29
30
#include "xen.h"
31
32
/* version of ABI */
33
0
#define TMEM_SPEC_VERSION          1
34
35
/* Commands to HYPERVISOR_tmem_op() */
36
#ifdef __XEN__
37
0
#define TMEM_CONTROL               0 /* Now called XEN_SYSCTL_tmem_op */
38
#else
39
#undef TMEM_CONTROL
40
#endif
41
0
#define TMEM_NEW_POOL              1
42
0
#define TMEM_DESTROY_POOL          2
43
0
#define TMEM_PUT_PAGE              4
44
0
#define TMEM_GET_PAGE              5
45
0
#define TMEM_FLUSH_PAGE            6
46
0
#define TMEM_FLUSH_OBJECT          7
47
#if __XEN_INTERFACE_VERSION__ < 0x00040400
48
#define TMEM_NEW_PAGE              3
49
#define TMEM_READ                  8
50
#define TMEM_WRITE                 9
51
#define TMEM_XCHG                 10
52
#endif
53
54
/* Privileged commands now called via XEN_SYSCTL_tmem_op. */
55
0
#define TMEM_AUTH                 101 /* as XEN_SYSCTL_TMEM_OP_SET_AUTH. */
56
0
#define TMEM_RESTORE_NEW          102 /* as XEN_SYSCTL_TMEM_OP_SET_POOL. */
57
58
/* Bits for HYPERVISOR_tmem_op(TMEM_NEW_POOL) */
59
0
#define TMEM_POOL_PERSIST          1
60
0
#define TMEM_POOL_SHARED           2
61
0
#define TMEM_POOL_PRECOMPRESSED    4
62
0
#define TMEM_POOL_PAGESIZE_SHIFT   4
63
0
#define TMEM_POOL_PAGESIZE_MASK  0xf
64
0
#define TMEM_POOL_VERSION_SHIFT   24
65
0
#define TMEM_POOL_VERSION_MASK  0xff
66
0
#define TMEM_POOL_RESERVED_BITS  0x00ffff00
67
68
/* Bits for client flags (save/restore) */
69
#define TMEM_CLIENT_COMPRESS       1
70
#define TMEM_CLIENT_FROZEN         2
71
72
/* Special errno values */
73
0
#define EFROZEN                 1000
74
0
#define EEMPTY                  1001
75
76
struct xen_tmem_oid {
77
    uint64_t oid[3];
78
};
79
typedef struct xen_tmem_oid xen_tmem_oid_t;
80
DEFINE_XEN_GUEST_HANDLE(xen_tmem_oid_t);
81
82
#ifndef __ASSEMBLY__
83
#if __XEN_INTERFACE_VERSION__ < 0x00040400
84
typedef xen_pfn_t tmem_cli_mfn_t;
85
#endif
86
typedef XEN_GUEST_HANDLE(char) tmem_cli_va_t;
87
struct tmem_op {
88
    uint32_t cmd;
89
    int32_t pool_id;
90
    union {
91
        struct {
92
            uint64_t uuid[2];
93
            uint32_t flags;
94
            uint32_t arg1;
95
        } creat; /* for cmd == TMEM_NEW_POOL. */
96
        struct {
97
#if __XEN_INTERFACE_VERSION__ < 0x00040600
98
            uint64_t oid[3];
99
#else
100
            xen_tmem_oid_t oid;
101
#endif
102
            uint32_t index;
103
            uint32_t tmem_offset;
104
            uint32_t pfn_offset;
105
            uint32_t len;
106
            xen_pfn_t cmfn; /* client machine page frame */
107
        } gen; /* for all other cmd ("generic") */
108
    } u;
109
};
110
typedef struct tmem_op tmem_op_t;
111
DEFINE_XEN_GUEST_HANDLE(tmem_op_t);
112
#endif
113
114
#endif /* __XEN_PUBLIC_TMEM_H__ */
115
116
/*
117
 * Local variables:
118
 * mode: C
119
 * c-file-style: "BSD"
120
 * c-basic-offset: 4
121
 * tab-width: 4
122
 * indent-tabs-mode: nil
123
 * End:
124
 */