#include <infiniband/verbs.h>
The following shall be declared as functions and may also be defined as macros. Function prototypes shall be provided.
Library functions int ibv_fork_init(void); Device functions struct ibv_device **ibv_get_device_list(int *num_devices); void ibv_free_device_list(struct ibv_device **list); const char *ibv_get_device_name(struct ibv_device *device); uint64_t ibv_get_device_guid(struct ibv_device *device); Context functions struct ibv_context *ibv_open_device(struct ibv_device *device); int ibv_close_device(struct ibv_context *context); Queries int ibv_query_device(struct ibv_context *context, struct ibv_device_attr *device_attr); int ibv_query_port(struct ibv_context *context, uint8_t port_num, struct ibv_port_attr *port_attr); int ibv_query_pkey(struct ibv_context *context, uint8_t port_num, int index, uint16_t *pkey); int ibv_query_gid(struct ibv_context *context, uint8_t port_num, int index, union ibv_gid *gid); Asynchronous events int ibv_get_async_event(struct ibv_context *context, struct ibv_async_event *event); void ibv_ack_async_event(struct ibv_async_event *event); Protection Domains struct ibv_pd *ibv_alloc_pd(struct ibv_context *context); int ibv_dealloc_pd(struct ibv_pd *pd); Memory Regions struct ibv_mr *ibv_reg_mr(struct ibv_pd *pd, void *addr, size_t length, enum ibv_access_flags access); int ibv_dereg_mr(struct ibv_mr *mr); Address Handles struct ibv_ah *ibv_create_ah(struct ibv_pd *pd, struct ibv_ah_attr *attr); int ibv_init_ah_from_wc(struct ibv_context *context, uint8_t port_num, struct ibv_wc *wc, struct ibv_grh *grh, struct ibv_ah_attr *ah_attr); struct ibv_ah *ibv_create_ah_from_wc(struct ibv_pd *pd, struct ibv_wc *wc, struct ibv_grh *grh, uint8_t port_num); int ibv_destroy_ah(struct ibv_ah *ah); Completion event channels struct ibv_comp_channel *ibv_create_comp_channel(struct ibv_context *context); int ibv_destroy_comp_channel(struct ibv_comp_channel *channel); Completion Queues Control struct ibv_cq *ibv_create_cq(struct ibv_context *context, int cqe, void *cq_context, struct ibv_comp_channel *channel, int comp_vector); int ibv_destroy_cq(struct ibv_cq *cq); int ibv_resize_cq(struct ibv_cq *cq, int cqe); Reading Completions from CQ int ibv_poll_cq(struct ibv_cq *cq, int num_entries, struct ibv_wc *wc); Requesting / Managing CQ events int ibv_req_notify_cq(struct ibv_cq *cq, int solicited_only); int ibv_get_cq_event(struct ibv_comp_channel *channel, struct ibv_cq **cq, void **cq_context); void ibv_ack_cq_events(struct ibv_cq *cq, unsigned int nevents); Shared Receive Queue control struct ibv_srq *ibv_create_srq(struct ibv_pd *pd, struct ibv_srq_init_attr *srq_init_attr); int ibv_destroy_srq(struct ibv_srq *srq); int ibv_modify_srq(struct ibv_srq *srq, struct ibv_srq_attr *srq_attr, enum ibv_srq_attr_mask srq_attr_mask); int ibv_query_srq(struct ibv_srq *srq, struct ibv_srq_attr *srq_attr); eXtended Reliable Connection control struct ibv_xrc_domain *ibv_open_xrc_domain(struct ibv_context *context, int fd, int oflag); int ibv_close_xrc_domain(struct ibv_xrc_domain *d); struct ibv_srq *ibv_create_xrc_srq(struct ibv_pd *pd, struct ibv_xrc_domain *xrc_domain, struct ibv_cq *xrc_cq, struct ibv_srq_init_attr *srq_init_attr); int ibv_create_xrc_rcv_qp(struct ibv_qp_init_attr *init_attr, uint32_t *xrc_rcv_qpn); int ibv_modify_xrc_rcv_qp(struct ibv_xrc_domain *xrc_domain, uint32_t xrc_qp_num, struct ibv_qp_attr *attr, int attr_mask); int ibv_query_xrc_rcv_qp(struct ibv_xrc_domain *xrc_domain, uint32_t xrc_qp_num, struct ibv_qp_attr *attr, int attr_mask, struct ibv_qp_init_attr *init_attr); int ibv_reg_xrc_rcv_qp(struct ibv_xrc_domain *xrc_domain, uint32_t xrc_qp_num); int ibv_unreg_xrc_rcv_qp(struct ibv_xrc_domain *xrc_domain, uint32_t xrc_qp_num); Queue Pair control struct ibv_qp *ibv_create_qp(struct ibv_pd *pd, struct ibv_qp_init_attr *qp_init_attr); int ibv_destroy_qp(struct ibv_qp *qp); int ibv_modify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, enum ibv_qp_attr_mask attr_mask); int ibv_query_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, enum ibv_qp_attr_mask attr_mask, struct ibv_qp_init_attr *init_attr); posting Work Requests to QPs/SRQs int ibv_post_send(struct ibv_qp *qp, struct ibv_send_wr *wr, struct ibv_send_wr **bad_wr); int ibv_post_recv(struct ibv_qp *qp, struct ibv_recv_wr *wr, struct ibv_recv_wr **bad_wr); int ibv_post_srq_recv(struct ibv_srq *srq, struct ibv_recv_wr *recv_wr, struct ibv_recv_wr **bad_recv_wr); Multicast group int ibv_attach_mcast(struct ibv_qp *qp, union ibv_gid *gid, uint16_t lid); int ibv_detach_mcast(struct ibv_qp *qp, union ibv_gid *gid, uint16_t lid); General functions int ibv_rate_to_mult(enum ibv_rate rate); enum ibv_rate mult_to_ibv_rate(int mult);"SEE ALSO"ibv_fork_init(), ibv_get_device_list(), ibv_free_device_list(), ibv_get_device_name(), ibv_get_device_guid(), ibv_open_device(), ibv_close_device(), ibv_query_device(), ibv_query_port(), ibv_query_pkey(), ibv_query_gid(), ibv_get_async_event(), ibv_ack_async_event(), ibv_alloc_pd(), ibv_dealloc_pd(), ibv_reg_mr(), ibv_dereg_mr(), ibv_create_ah(), ibv_init_ah_from_wc(), ibv_create_ah_from_wc(), ibv_destroy_ah(), ibv_create_comp_channel(), ibv_destroy_comp_channel(), ibv_create_cq(), ibv_destroy_cq(), ibv_resize_cq(), ibv_poll_cq(), ibv_req_notify_cq(), ibv_get_cq_event(), ibv_ack_cq_events(), ibv_create_srq(), ibv_destroy_srq(), ibv_modify_srq(), ibv_query_srq(), ibv_open_xrc_domain(), ibv_close_xrc_domain(), ibv_create_xrc_srq(), ibv_create_xrc_rcv_qp(), ibv_modify_xrc_rcv_qp(), ibv_query_xrc_rcv_qp(), ibv_reg_xrc_rcv_qp(), ibv_unreg_xrc_rcv_qp(), ibv_post_srq_recv(), ibv_create_qp(), ibv_destroy_qp(), ibv_modify_qp(), ibv_query_qp(), ibv_post_send(), ibv_post_recv(), ibv_attach_mcast(), ibv_detach_mcast(), ibv_rate_to_mult(), mult_to_ibv_rate()
"AUTHORS"Dotan Barak <dotanb@mellanox.co.il>
Or Gerlitz <ogerlitz@voltaire.com>