root / drivers / tapdisk-ring.h @ abdb293f
History | View | Annotate | Download (3.1 kB)
1 | abdb293f | Chrysostomos Nanakos | /*
|
---|---|---|---|
2 | abdb293f | Chrysostomos Nanakos | * Copyright (c) 2008, XenSource Inc.
|
3 | abdb293f | Chrysostomos Nanakos | * All rights reserved.
|
4 | abdb293f | Chrysostomos Nanakos | *
|
5 | abdb293f | Chrysostomos Nanakos | * Redistribution and use in source and binary forms, with or without
|
6 | abdb293f | Chrysostomos Nanakos | * modification, are permitted provided that the following conditions are met:
|
7 | abdb293f | Chrysostomos Nanakos | * * Redistributions of source code must retain the above copyright
|
8 | abdb293f | Chrysostomos Nanakos | * notice, this list of conditions and the following disclaimer.
|
9 | abdb293f | Chrysostomos Nanakos | * * Redistributions in binary form must reproduce the above copyright
|
10 | abdb293f | Chrysostomos Nanakos | * notice, this list of conditions and the following disclaimer in the
|
11 | abdb293f | Chrysostomos Nanakos | * documentation and/or other materials provided with the distribution.
|
12 | abdb293f | Chrysostomos Nanakos | * * Neither the name of XenSource Inc. nor the names of its contributors
|
13 | abdb293f | Chrysostomos Nanakos | * may be used to endorse or promote products derived from this software
|
14 | abdb293f | Chrysostomos Nanakos | * without specific prior written permission.
|
15 | abdb293f | Chrysostomos Nanakos | *
|
16 | abdb293f | Chrysostomos Nanakos | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
17 | abdb293f | Chrysostomos Nanakos | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
18 | abdb293f | Chrysostomos Nanakos | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
19 | abdb293f | Chrysostomos Nanakos | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
20 | abdb293f | Chrysostomos Nanakos | * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
21 | abdb293f | Chrysostomos Nanakos | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
22 | abdb293f | Chrysostomos Nanakos | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
23 | abdb293f | Chrysostomos Nanakos | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
24 | abdb293f | Chrysostomos Nanakos | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
25 | abdb293f | Chrysostomos Nanakos | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 | abdb293f | Chrysostomos Nanakos | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 | abdb293f | Chrysostomos Nanakos | */
|
28 | abdb293f | Chrysostomos Nanakos | #ifndef _TAPDISK_RING_H_
|
29 | abdb293f | Chrysostomos Nanakos | #define _TAPDISK_RING_H_
|
30 | abdb293f | Chrysostomos Nanakos | |
31 | abdb293f | Chrysostomos Nanakos | #include <inttypes.h> |
32 | abdb293f | Chrysostomos Nanakos | |
33 | abdb293f | Chrysostomos Nanakos | #include <xenctrl.h> |
34 | abdb293f | Chrysostomos Nanakos | #include <xen/io/ring.h> |
35 | abdb293f | Chrysostomos Nanakos | |
36 | abdb293f | Chrysostomos Nanakos | typedef struct td_uring td_uring_t; |
37 | abdb293f | Chrysostomos Nanakos | typedef struct td_uring_header td_uring_header_t; |
38 | abdb293f | Chrysostomos Nanakos | typedef struct td_uring_request td_uring_request_t; |
39 | abdb293f | Chrysostomos Nanakos | typedef struct td_uring_response td_uring_response_t; |
40 | abdb293f | Chrysostomos Nanakos | |
41 | abdb293f | Chrysostomos Nanakos | struct td_uring {
|
42 | abdb293f | Chrysostomos Nanakos | int ctlfd;
|
43 | abdb293f | Chrysostomos Nanakos | |
44 | abdb293f | Chrysostomos Nanakos | char *shmem_path;
|
45 | abdb293f | Chrysostomos Nanakos | char *ctlfd_path;
|
46 | abdb293f | Chrysostomos Nanakos | |
47 | abdb293f | Chrysostomos Nanakos | void *shmem;
|
48 | abdb293f | Chrysostomos Nanakos | void *ring_area;
|
49 | abdb293f | Chrysostomos Nanakos | void *data_area;
|
50 | abdb293f | Chrysostomos Nanakos | }; |
51 | abdb293f | Chrysostomos Nanakos | |
52 | abdb293f | Chrysostomos Nanakos | struct td_uring_header {
|
53 | abdb293f | Chrysostomos Nanakos | char cookie[8]; |
54 | abdb293f | Chrysostomos Nanakos | uint32_t version; |
55 | abdb293f | Chrysostomos Nanakos | uint32_t shmem_size; |
56 | abdb293f | Chrysostomos Nanakos | uint32_t ring_size; |
57 | abdb293f | Chrysostomos Nanakos | uint32_t data_size; |
58 | abdb293f | Chrysostomos Nanakos | char reserved[4064]; |
59 | abdb293f | Chrysostomos Nanakos | }; |
60 | abdb293f | Chrysostomos Nanakos | |
61 | abdb293f | Chrysostomos Nanakos | struct td_uring_request {
|
62 | abdb293f | Chrysostomos Nanakos | uint8_t op; |
63 | abdb293f | Chrysostomos Nanakos | uint64_t id; |
64 | abdb293f | Chrysostomos Nanakos | uint64_t sec; |
65 | abdb293f | Chrysostomos Nanakos | uint32_t secs; |
66 | abdb293f | Chrysostomos Nanakos | uint32_t offset; |
67 | abdb293f | Chrysostomos Nanakos | }; |
68 | abdb293f | Chrysostomos Nanakos | |
69 | abdb293f | Chrysostomos Nanakos | struct td_uring_response {
|
70 | abdb293f | Chrysostomos Nanakos | uint8_t op; |
71 | abdb293f | Chrysostomos Nanakos | uint64_t id; |
72 | abdb293f | Chrysostomos Nanakos | uint8_t status; |
73 | abdb293f | Chrysostomos Nanakos | }; |
74 | abdb293f | Chrysostomos Nanakos | |
75 | abdb293f | Chrysostomos Nanakos | DEFINE_RING_TYPES(td_uring, td_uring_request_t, td_uring_response_t); |
76 | abdb293f | Chrysostomos Nanakos | |
77 | abdb293f | Chrysostomos Nanakos | int tapdisk_uring_create(td_uring_t *, const char *location, |
78 | abdb293f | Chrysostomos Nanakos | uint32_t ring_size, uint32_t data_size); |
79 | abdb293f | Chrysostomos Nanakos | int tapdisk_uring_destroy(td_uring_t *);
|
80 | abdb293f | Chrysostomos Nanakos | |
81 | abdb293f | Chrysostomos Nanakos | int tapdisk_uring_connect(td_uring_t *, const char *location); |
82 | abdb293f | Chrysostomos Nanakos | int tapdisk_uring_disconnect(td_uring_t *);
|
83 | abdb293f | Chrysostomos Nanakos | |
84 | abdb293f | Chrysostomos Nanakos | int tapdisk_uring_poll(td_uring_t *);
|
85 | abdb293f | Chrysostomos Nanakos | int tapdisk_uring_kick(td_uring_t *);
|
86 | abdb293f | Chrysostomos Nanakos | |
87 | abdb293f | Chrysostomos Nanakos | #endif |