blob: fd830f8e2e9971c2e42fcde692f4ba27b7e04213 [file] [view]
---
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>