]>
Commit | Line | Data |
---|---|---|
d2e6a577 FG |
1 | // -*- mode:C; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- |
2 | // vim: ts=8 sw=2 smarttab | |
3 | ||
4 | #ifndef CEPH_RBD_GGATE_GGATE_DRV_H | |
5 | #define CEPH_RBD_GGATE_GGATE_DRV_H | |
6 | ||
7 | #ifdef __cplusplus | |
8 | extern "C" { | |
9 | #endif | |
10 | ||
11 | #include <stdbool.h> | |
12 | #include <stdint.h> | |
13 | ||
14 | typedef void *ggate_drv_t; | |
15 | typedef void *ggate_drv_req_t; | |
16 | ||
17 | /* | |
18 | * GGATE driver commands. They are mapped to GgateReq::Command. | |
19 | */ | |
20 | enum { | |
21 | GGATE_DRV_CMD_UNKNOWN = 0, | |
22 | GGATE_DRV_CMD_WRITE = 1, | |
23 | GGATE_DRV_CMD_READ = 2, | |
24 | GGATE_DRV_CMD_FLUSH = 3, | |
25 | GGATE_DRV_CMD_DISCARD = 4, | |
26 | }; | |
27 | ||
28 | uint64_t ggate_drv_req_id(ggate_drv_req_t req); | |
29 | int ggate_drv_req_cmd(ggate_drv_req_t req); | |
30 | void *ggate_drv_req_buf(ggate_drv_req_t req); | |
31 | size_t ggate_drv_req_length(ggate_drv_req_t req); | |
32 | uint64_t ggate_drv_req_offset(ggate_drv_req_t req); | |
33 | int ggate_drv_req_error(ggate_drv_req_t req); | |
34 | ||
35 | void ggate_drv_req_set_error(ggate_drv_req_t req, int error); | |
36 | void *ggate_drv_req_release_buf(ggate_drv_req_t req); | |
37 | ||
38 | int ggate_drv_load(); | |
39 | ||
40 | int ggate_drv_create(char *name, size_t namelen, size_t sectorsize, | |
41 | size_t mediasize, bool readonly, const char *info, ggate_drv_t *drv); | |
42 | void ggate_drv_destroy(ggate_drv_t drv); | |
43 | ||
44 | int ggate_drv_recv(ggate_drv_t drv, ggate_drv_req_t *req); | |
45 | int ggate_drv_send(ggate_drv_t drv, ggate_drv_req_t req); | |
46 | ||
47 | int ggate_drv_resize(ggate_drv_t drv, size_t newsize); | |
48 | ||
49 | int ggate_drv_kill(const char *devname); | |
50 | int ggate_drv_list(char **devs, size_t *size); | |
51 | void ggate_drv_list_free(char **devs, size_t size); | |
52 | ||
53 | #ifdef __cplusplus | |
54 | } | |
55 | #endif | |
56 | ||
57 | #endif // CEPH_RBD_GGATE_GGATE_DRV_H |