--- 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 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 Alex Rosenbaum