qemu-nbd: Avoid strtol open-coding
[qemu/ar7.git] / hw / rdma / rdma_backend_defs.h
blob1e5c3dd3bfd61df701714deb86202ad7bd971fad
1 /*
2 * RDMA device: Definitions of Backend Device structures
4 * Copyright (C) 2018 Oracle
5 * Copyright (C) 2018 Red Hat Inc
7 * Authors:
8 * Yuval Shaia <yuval.shaia@oracle.com>
9 * Marcel Apfelbaum <marcel@redhat.com>
11 * This work is licensed under the terms of the GNU GPL, version 2 or later.
12 * See the COPYING file in the top-level directory.
16 #ifndef RDMA_BACKEND_DEFS_H
17 #define RDMA_BACKEND_DEFS_H
19 #include "qemu/thread.h"
20 #include "chardev/char-fe.h"
21 #include <infiniband/verbs.h>
22 #include "contrib/rdmacm-mux/rdmacm-mux.h"
24 typedef struct RdmaDeviceResources RdmaDeviceResources;
26 typedef struct RdmaBackendThread {
27 QemuThread thread;
28 QemuMutex mutex;
29 bool run; /* Set by thread manager to let thread know it should exit */
30 bool is_running; /* Set by the thread to report its status */
31 } RdmaBackendThread;
33 typedef struct RecvMadList {
34 QemuMutex lock;
35 QList *list;
36 } RecvMadList;
38 typedef struct RdmaCmMux {
39 CharBackend *chr_be;
40 int can_receive;
41 } RdmaCmMux;
43 typedef struct RdmaBackendDev {
44 struct ibv_device_attr dev_attr;
45 RdmaBackendThread comp_thread;
46 PCIDevice *dev;
47 RdmaDeviceResources *rdma_dev_res;
48 struct ibv_device *ib_dev;
49 struct ibv_context *context;
50 struct ibv_comp_channel *channel;
51 uint8_t port_num;
52 RecvMadList recv_mads_list;
53 RdmaCmMux rdmacm_mux;
54 } RdmaBackendDev;
56 typedef struct RdmaBackendPD {
57 struct ibv_pd *ibpd;
58 } RdmaBackendPD;
60 typedef struct RdmaBackendMR {
61 struct ibv_pd *ibpd;
62 struct ibv_mr *ibmr;
63 } RdmaBackendMR;
65 typedef struct RdmaBackendCQ {
66 RdmaBackendDev *backend_dev;
67 struct ibv_cq *ibcq;
68 } RdmaBackendCQ;
70 typedef struct RdmaBackendQP {
71 struct ibv_pd *ibpd;
72 struct ibv_qp *ibqp;
73 uint8_t sgid_idx;
74 } RdmaBackendQP;
76 #endif