ibv_create_counters(3)

πŸ’– ibv_create_counters(3) πŸ’–

okay so bestie, this is the Libibverbs Programmer’s Manual page for ibv_create_counters(3), and it’s literally all about making and destroying a counters handle. slay.


🌸 NAME 🌸

  • ibv_create_counters, ibv_destroy_counters β€” Create or destroy a counters handle

✨ SYNOPSIS ✨

#include <infiniband/verbs.h>

struct ibv_counters *
ibv_create_counters(struct ibv_context *context,
                    struct ibv_counters_init_attr *init_attr);

int ibv_destroy_counters(struct ibv_counters *counters);

πŸ¦‹ DESCRIPTION πŸ¦‹

ibv_create_counters() creates a new counters handle for the RDMA device context. main character behavior, honestly.

An ibv_counters handle can be attached to a verbs resource (e.g.: QP, WQ, Flow) statically when these are created.

For example attach an ibv_counters statically to a Flow (struct ibv_flow) during creation of a new Flow by calling ibv_create_flow().

Counters are cleared upon creation and values will be monotonically increasing. so they only go up, no cap πŸ“ˆ

ibv_destroy_counters() releases the counters handle, user should detach the counters object before destroying it.

bestie please detach first, okay? the page says you should, and we respect the page πŸ’…

πŸŽ€ ARGUMENTS πŸŽ€

  • context β€” RDMA device context to create the counters on.
  • init_attr β€” Is an ibv_counters_init_attr struct, as defined in verbs.h.

🧚 init_attr Argument 🧚

struct ibv_counters_init_attr {
    int comp_mask;
};
  • comp_mask β€” Bitmask specifying what fields in the structure are valid.

πŸ’« RETURN VALUE πŸ’«

ibv_create_counters() returns a pointer to the allocated ibv_counters object, or NULL if the request fails (and sets errno to indicate the failure reason).

ibv_destroy_counters() returns 0 on success, or the value of errno on failure (which indicates the failure reason).


🚨 ERRORS 🚨

  • EOPNOTSUPP β€” ibv_create_counters() is not currently supported on this device (ENOSYS may sometimes be returned by old versions of libibverbs).
  • ENOMEM β€” ibv_create_counters() could not create ibv_counters object, not enough memory.
  • EINVAL β€” invalid parameter supplied ibv_destroy_counters().

🌈 EXAMPLE 🌈

An example of use of ibv_counters is shown in ibv_read_counters.


πŸ‘‘ SEE ALSO πŸ‘‘

ibv_attach_counters_point_flow, ibv_read_counters, ibv_create_flow


πŸ’œ AUTHORS πŸ’œ

  • Raed Salem <raeds@mellanox.com>
  • Alex Rosenbaum <alexr@mellanox.com>

xoxo, this page is brought to you by libibverbs, dated 2018-04-02, and it’s the ibv_create_counters(3) manual page 🫢✨

πŸ“¦ where this page comes from