libosmocore
0.9.6.315-40e62
Osmocom core library
|
Files | |
file | stat_item.h |
file | stat_item.c |
utility routines for keeping conters about events and the event rates. | |
Data Structures | |
struct | osmo_stat_item_value |
struct | osmo_stat_item |
data we keep for each actual value More... | |
struct | osmo_stat_item_desc |
statistics value description More... | |
struct | osmo_stat_item_group_desc |
description of a statistics value group More... | |
struct | osmo_stat_item_group |
One instance of a counter group class. More... | |
Macros | |
#define | OSMO_STAT_ITEM_NOVALUE_ID 0 |
#define | OSMO_STAT_ITEM_NO_UNIT NULL |
Typedefs | |
typedef int(* | osmo_stat_item_handler_t )(struct osmo_stat_item_group *, struct osmo_stat_item *, void *) |
typedef int(* | osmo_stat_item_group_handler_t )(struct osmo_stat_item_group *, void *) |
Functions | |
struct osmo_stat_item_group * | osmo_stat_item_group_alloc (void *ctx, const struct osmo_stat_item_group_desc *desc, unsigned int idx) |
Allocate a new group of counters according to description. More... | |
static void | osmo_stat_item_group_udp_idx (struct osmo_stat_item_group *grp, unsigned int idx) |
void | osmo_stat_item_group_free (struct osmo_stat_item_group *grp) |
Free the memory for the specified group of counters. More... | |
void | osmo_stat_item_set (struct osmo_stat_item *item, int32_t value) |
int | osmo_stat_item_init (void *tall_ctx) |
Initialize the stat item module. More... | |
struct osmo_stat_item_group * | osmo_stat_item_get_group_by_name_idx (const char *name, const unsigned int idx) |
Search for item group based on group name and index. More... | |
const struct osmo_stat_item * | osmo_stat_item_get_by_name (const struct osmo_stat_item_group *statg, const char *name) |
Search for item group based on group name. More... | |
int | osmo_stat_item_get_next (const struct osmo_stat_item *item, int32_t *idx, int32_t *value) |
Retrieve the next value from the osmo_stat_item object. More... | |
static int32_t | osmo_stat_item_get_last (const struct osmo_stat_item *item) |
Get the last (freshest) value. More... | |
int | osmo_stat_item_discard (const struct osmo_stat_item *item, int32_t *idx) |
Skip all values of the item and update idx accordingly. More... | |
int | osmo_stat_item_discard_all (int32_t *idx) |
Skip all values of all items and update idx accordingly. More... | |
int | osmo_stat_item_for_each_item (struct osmo_stat_item_group *statg, osmo_stat_item_handler_t handle_item, void *data) |
Iteate over all items. More... | |
int | osmo_stat_item_for_each_group (osmo_stat_item_group_handler_t handle_group, void *data) |
static | LLIST_HEAD (osmo_stat_item_groups) |
Variables | |
static int32_t | global_value_id = 0 |
static void * | tall_stat_item_ctx |
#define OSMO_STAT_ITEM_NO_UNIT NULL |
Referenced by osmo_stats_reporter_statsd_send_item().
#define OSMO_STAT_ITEM_NOVALUE_ID 0 |
Referenced by osmo_stat_item_get_next(), osmo_stat_item_group_alloc(), and osmo_stat_item_set().
typedef int(* osmo_stat_item_group_handler_t)(struct osmo_stat_item_group *, void *) |
typedef int(* osmo_stat_item_handler_t)(struct osmo_stat_item_group *, struct osmo_stat_item *, void *) |
|
static |
int osmo_stat_item_discard | ( | const struct osmo_stat_item * | item, |
int32_t * | idx | ||
) |
Skip all values of the item and update idx accordingly.
Skip all values of this item and update idx accordingly.
References osmo_stat_item_value::id, last_offs, and values.
int osmo_stat_item_discard_all | ( | int32_t * | idx | ) |
Skip all values of all items and update idx accordingly.
References global_value_id.
Referenced by osmo_stats_init(), and osmo_stats_report().
int osmo_stat_item_for_each_group | ( | osmo_stat_item_group_handler_t | handle_group, |
void * | data | ||
) |
References osmo_stat_item_group::list, and llist_for_each_entry.
Referenced by osmo_stats_report().
int osmo_stat_item_for_each_item | ( | struct osmo_stat_item_group * | statg, |
osmo_stat_item_handler_t | handle_item, | ||
void * | data | ||
) |
Iteate over all items.
[in] | handle_item | Call-back function, aborts if rc < 0 |
[in] | data | Private data handed through to handle_item |
References osmo_stat_item_group::desc, osmo_stat_item_group::items, and osmo_stat_item_group_desc::num_items.
Referenced by osmo_stat_item_group_handler().
const struct osmo_stat_item * osmo_stat_item_get_by_name | ( | const struct osmo_stat_item_group * | statg, |
const char * | name | ||
) |
Search for item group based on group name.
References osmo_stat_item_group::desc, osmo_stat_item_group_desc::item_desc, osmo_stat_item_group::items, osmo_stat_item_desc::name, and osmo_stat_item_group_desc::num_items.
struct osmo_stat_item_group * osmo_stat_item_get_group_by_name_idx | ( | const char * | name, |
const unsigned int | idx | ||
) |
Search for item group based on group name and index.
References osmo_stat_item_group::desc, osmo_stat_item_group_desc::group_name_prefix, osmo_stat_item_group::idx, osmo_stat_item_group::list, and llist_for_each_entry.
|
inlinestatic |
Get the last (freshest) value.
References last_offs, osmo_stat_item_value::value, and values.
Referenced by osmo_stat_item_handler().
int osmo_stat_item_get_next | ( | const struct osmo_stat_item * | item, |
int32_t * | idx, | ||
int32_t * | value | ||
) |
Retrieve the next value from the osmo_stat_item object.
If a new value has been set, it is returned. The idx is used to decide which value to return. On success, *idx is updated to refer to the next unread value. If values have been missed due to FIFO overflow, *idx is incremented by (1 + num_lost). This way, the osmo_stat_item object can be kept stateless from the reader's perspective and therefore be used by several backends simultaneously.
val | the osmo_stat_item object |
idx | identifies the next value to be read |
value | a pointer to store the value |
References desc, osmo_stat_item_value::id, last_offs, osmo_stat_item_desc::num_values, OSMO_STAT_ITEM_NOVALUE_ID, osmo_stat_item_value::value, and values.
Referenced by osmo_stat_item_handler().
struct osmo_stat_item_group * osmo_stat_item_group_alloc | ( | void * | ctx, |
const struct osmo_stat_item_group_desc * | desc, | ||
unsigned int | idx | ||
) |
Allocate a new group of counters according to description.
[in] | ctx | talloc context |
[in] | desc | Statistics item group description |
[in] | idx | Index of new stat item group |
References desc, osmo_stat_item_group::desc, osmo_stat_item_value::id, osmo_stat_item_group::idx, osmo_stat_item_group::items, last_offs, last_value_index, osmo_stat_item_group::list, llist_add(), OSMO_STAT_ITEM_NOVALUE_ID, tall_stat_item_ctx, osmo_stat_item_value::value, and values.
void osmo_stat_item_group_free | ( | struct osmo_stat_item_group * | statg | ) |
Free the memory for the specified group of counters.
References osmo_stat_item_group::list, and llist_del().
|
inlinestatic |
References osmo_stat_item_group::idx.
int osmo_stat_item_init | ( | void * | tall_ctx | ) |
Initialize the stat item module.
References tall_stat_item_ctx.
void osmo_stat_item_set | ( | struct osmo_stat_item * | item, |
int32_t | value | ||
) |
|
static |
Referenced by osmo_stat_item_discard_all(), and osmo_stat_item_set().
|
static |
Referenced by osmo_stat_item_group_alloc(), and osmo_stat_item_init().