ib_poll_cq(9)
π ib_poll_cq(9) β poll a CQ for completion(s)
okay bestie, so this one lives in section 9 of the Kernel API Manual, and it's genuinely one of the most "main character" calls in the whole RDMA header file. buckle up π
β¨ SYNOPSIS β¨
int ib_poll_cq (struct ib_cq *cq , int num_entries , struct ib_wc *wc );
like, three args, one int back, no drama. iconic behavior honestly π¦
πΈ ARGUMENTS πΈ
cqβ the CQ you're polling. yes, that CQ. the one you're obsessed with πnum_entriesβ the maximum number of completions you're willing to get handed back. like a limit on the vibe check, fr fr.wcβ an array of at leastnum_entriesstruct ib_wc, and that's exactly where the completions get dropped off. not optional, not negotiable, size it right or perish π
π¦ DESCRIPTION π¦
So you poll a CQ for completions β possibly multiple completions, which is the whole point, lowkey the flex of this function β¨
Now the return value lore, because this is the part everyone gets wrong:
- if the return value is
< 0, an error happened. sad. π - if the return value is
>= 0, that number is the number of completions returned. slay. π - if the return value is non-negative and
< num_entries, then the CQ was emptied. that's it, that's the drain, periodt π
ngl the "non-negative and less than num_entries" combo is the actual tell here β that's your "we're empty, bestie" signal. don't sleep on it π«Ά
π SEE ALSO π
the friend group is huge, but they're all here, no cap:
Kernel file ./include/rdma/ib_verbs.h, struct rdma_stat_desc(9), struct rdma_hw_stats(9), ib_rate_to_mult(9), ib_rate_to_mbps(9), ib_port_attr_to_speed_info(9), enum ib_mr_type(9), struct ib_mr_status(9), mult_to_ib_rate(9), struct ib_udata(9), struct rdma_netdev(9), struct ib_device_ops(9), ib_get_client_data(9), ib_modify_qp_is_ok(9), rdma_cap_ib_switch(9), rdma_start_port(9), rdma_for_each_port(9), rdma_end_port(9), rdma_cap_ib_mad(9), rdma_cap_opa_mad(9), rdma_cap_ib_smi(9), rdma_cap_ib_cm(9), rdma_cap_iw_cm(9), rdma_cap_ib_sa(9), rdma_cap_ib_mcast(9), rdma_cap_af_ib(9), rdma_cap_eth_ah(9), rdma_cap_opa_ah(9), rdma_max_mad_size(9), rdma_cap_roce_gid_table(9), rdma_core_cap_opa_port(9), rdma_mtu_enum_to_int(9), rdma_mtu_from_attr(9), ib_alloc_pd(9), ib_dealloc_pd(9), rdma_create_ah(9), rdma_create_user_ah(9), ib_get_gids_from_rdma_hdr(9), ib_get_rdma_header_version(9), ib_init_ah_attr_from_wc(9), ib_create_ah_from_wc(9), rdma_modify_ah(9), rdma_query_ah(9), rdma_destroy_ah_user(9), rdma_destroy_ah(9), ib_modify_srq(9), ib_query_srq(9), ib_destroy_srq_user(9), ib_destroy_srq(9), ib_post_srq_recv(9), ib_create_qp(9), ib_modify_qp_with_udata(9), ib_modify_qp(9), ib_query_qp(9), ib_destroy_qp(9), ib_open_qp(9), ib_close_qp(9), ib_post_send(9), ib_post_recv(9), ib_alloc_cq_any(9), rdma_set_cq_moderation(9), ib_destroy_cq_user(9), ib_destroy_cq(9), ib_req_notify_cq(9), ib_virt_dma_to_ptr(9), ib_virt_dma_to_page(9), ib_dma_mapping_error(9), ib_dma_map_single(9), ib_dma_unmap_single(9), ib_dma_map_page(9), ib_dma_unmap_page(9), ib_dma_map_bvec(9), ib_dma_unmap_bvec(9), ib_dma_map_sgtable_attrs(9), ib_dma_map_sg(9), ib_dma_unmap_sg(9), ib_dma_max_seg_size(9), ib_dma_sync_single_for_cpu(9), ib_dma_sync_single_for_device(9), ib_dereg_mr_user(9), ib_dereg_mr(9), ib_update_fast_reg_key(9), ib_inc_rkey(9), ib_attach_mcast(9), ib_detach_mcast(9), ib_check_mr_status(9), ib_device_try_get(9), rdma_ah_find_type(9), ib_lid_cpu16(9), ib_lid_be16(9), rdma_roce_rescan_device(9), rdma_device_to_ibdev(9), ibdev_to_node(9), rdma_device_to_drv_device(9), rdma_flow_label_to_udp_sport(9), rdma_calc_flow_label(9), rdma_get_udp_sport(9)
β¨ that's the whole page, bestie β go poll something β¨
and for the credits moment π¬ this one's sourced from ./include/rdma, dated October 2026. catch you on the next manpage, mwah ππ«Ά
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms