]> git.proxmox.com Git - ceph.git/blame - ceph/src/tools/rbd_ggate/ggate_drv.h
update sources to v12.1.3
[ceph.git] / ceph / src / tools / rbd_ggate / ggate_drv.h
CommitLineData
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
8extern "C" {
9#endif
10
11#include <stdbool.h>
12#include <stdint.h>
13
14typedef void *ggate_drv_t;
15typedef void *ggate_drv_req_t;
16
17/*
18 * GGATE driver commands. They are mapped to GgateReq::Command.
19 */
20enum {
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
28uint64_t ggate_drv_req_id(ggate_drv_req_t req);
29int ggate_drv_req_cmd(ggate_drv_req_t req);
30void *ggate_drv_req_buf(ggate_drv_req_t req);
31size_t ggate_drv_req_length(ggate_drv_req_t req);
32uint64_t ggate_drv_req_offset(ggate_drv_req_t req);
33int ggate_drv_req_error(ggate_drv_req_t req);
34
35void ggate_drv_req_set_error(ggate_drv_req_t req, int error);
36void *ggate_drv_req_release_buf(ggate_drv_req_t req);
37
38int ggate_drv_load();
39
40int ggate_drv_create(char *name, size_t namelen, size_t sectorsize,
41 size_t mediasize, bool readonly, const char *info, ggate_drv_t *drv);
42void ggate_drv_destroy(ggate_drv_t drv);
43
44int ggate_drv_recv(ggate_drv_t drv, ggate_drv_req_t *req);
45int ggate_drv_send(ggate_drv_t drv, ggate_drv_req_t req);
46
47int ggate_drv_resize(ggate_drv_t drv, size_t newsize);
48
49int ggate_drv_kill(const char *devname);
50int ggate_drv_list(char **devs, size_t *size);
51void 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