Skip to content

Posts Tagged ‘Completion Queue ’

Let's start with the bottom line: the verbs API is fully thread safe and verbs can be called from every thread in the process. Part of the thread safe is implemented at the libibverbs level and part of it is...

void ibv_ack_cq_events(struct ibv_cq *cq, unsigned int nevents);void ibv_ack_cq_events(struct ibv_cq *cq, unsigned int nevents); Description ibv_ack_cq_events() acknowledge Completion events. In order to prevent races, all of the Completion events that were read using ibv_get_cq_event() must be acknowledged using ibv_ack_cq_events(). Calling ibv_ack_cq_events()...

int ibv_get_cq_event(struct ibv_comp_channel *channel, struct ibv_cq **cq, void **cq_context);int ibv_get_cq_event(struct ibv_comp_channel *channel, struct ibv_cq **cq, void **cq_context); Description ibv_get_cq_event() waits for the next Completion event, according to the Completion event type that was requested using ibv_req_notify_cq() for a specific Completion...

int ibv_req_notify_cq(struct ibv_cq *cq, int solicited_only);int ibv_req_notify_cq(struct ibv_cq *cq, int solicited_only); Description ibv_req_notify_cq() requests a Completion Notification on a Completion Queue (CQ). ibv_req_notify_cq() requests a notification when the next Work Completion of a requested type is added to the CQ....

int ibv_poll_cq(struct ibv_cq *cq, int num_entries, struct ibv_wc *wc);int ibv_poll_cq(struct ibv_cq *cq, int num_entries, struct ibv_wc *wc); Description ibv_poll_cq() polls Work Completions from a Completion Queue (CQ). A Work Completion indicates that a Work Request in a Work Queue, and...

int ibv_resize_cq(struct ibv_cq *cq, int cqe);int ibv_resize_cq(struct ibv_cq *cq, int cqe); Description ibv_resize_cq() resizes a Completion Queue. A CQ can be resized either if it is empty or contains Work Completions that still weren’t polled by ibv_poll_cq(). It can be...

int ibv_destroy_cq(struct ibv_cq *cq);int ibv_destroy_cq(struct ibv_cq *cq); Description ibv_destroy_cq() destroys a Completion Queue. The destruction of a CQ will fail if any QP is still associated with it. If there is any affiliated asynchronous event on that CQ that was...

struct ibv_cq *ibv_create_cq(struct ibv_context *context, int cqe, void *cq_context, struct ibv_comp_channel *channel, int comp_vector);struct ibv_cq *ibv_create_cq(struct ibv_context *context, int cqe, void *cq_context, struct ibv_comp_channel *channel, int comp_vector); Description ibv_create_cq() creates a Completion Queue (CQ) for an RDMA device context. When...