| --- |
| date: 2018-04-02 |
| footer: libibverbs |
| header: "Libibverbs Programmer's Manual" |
| layout: page |
| license: 'Licensed under the OpenIB.org BSD license (FreeBSD Variant) - See COPYING.md' |
| section: 3 |
| title: ibv_create_counters |
| tagline: Verbs |
| --- |
| |
| # NAME |
| |
| **ibv_create_counters**, **ibv_destroy_counters** - Create or destroy a counters handle |
| |
| # SYNOPSIS |
| |
| ```c |
| #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. |
| |
| 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. |
| |
| **ibv_destroy_counters**() releases the counters handle, user should |
| detach the counters object before destroying it. |
| |
| # 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 |
| |
| ```c |
| 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> |
| |