diff options
Diffstat (limited to 'apps/osmocomBB/libosmocore/include/osmocom/core/statistics.h')
-rw-r--r-- | apps/osmocomBB/libosmocore/include/osmocom/core/statistics.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/apps/osmocomBB/libosmocore/include/osmocom/core/statistics.h b/apps/osmocomBB/libosmocore/include/osmocom/core/statistics.h new file mode 100644 index 0000000000..04816c166f --- /dev/null +++ b/apps/osmocomBB/libosmocore/include/osmocom/core/statistics.h @@ -0,0 +1,53 @@ +#ifndef _STATISTICS_H +#define _STATISTICS_H + +/*! \file statistics.h + * \brief Common routines regarding statistics */ + +/*! structure representing a single counter */ +struct osmo_counter { + struct llist_head list; /*!< \brief internal list head */ + const char *name; /*!< \brief human-readable name */ + const char *description; /*!< \brief humn-readable description */ + unsigned long value; /*!< \brief current value */ +}; + +/*! \brief Increment counter */ +static inline void osmo_counter_inc(struct osmo_counter *ctr) +{ + ctr->value++; +} + +/*! \brief Get current value of counter */ +static inline unsigned long osmo_counter_get(struct osmo_counter *ctr) +{ + return ctr->value; +} + +/*! \brief Reset current value of counter to 0 */ +static inline void osmo_counter_reset(struct osmo_counter *ctr) +{ + ctr->value = 0; +} + +/*! \brief Allocate a new counter */ +struct osmo_counter *osmo_counter_alloc(const char *name); + +/*! \brief Free the specified counter + * \param[ctr] Counter + */ +void osmo_counter_free(struct osmo_counter *ctr); + +/*! \brief Iteate over all counters + * \param[in] handle_counter Call-back function + * \param[in] data Private dtata handed through to \a handle_counter + */ +int osmo_counters_for_each(int (*handle_counter)(struct osmo_counter *, void *), void *data); + +/*! \brief Resolve counter by human-readable name + * \param[in] name human-readable name of counter + * \returns pointer to counter (\ref osmo_counter) or NULL otherwise + */ +struct osmo_counter *osmo_counter_get_by_name(const char *name); + +#endif /* _STATISTICS_H */ |