#pragma once /* * Copyright (c) 2016 MariaDB Corporation Ab * * Use of this software is governed by the Business Source License included * in the LICENSE.TXT file and at www.mariadb.com/bsl11. * * Change Date: 2020-01-01 * * On the date above, in accordance with the Business Source License, use * of this software will be governed by version 2 or later of the General * Public License. */ /** * @file statistics.h - Lock-free statistics gathering */ #include #include MXS_BEGIN_DECLS typedef void* ts_stats_t; /** Enum values for ts_stats_get */ enum ts_stats_type { TS_STATS_MAX, /**< Maximum value */ TS_STATS_MIX, /**< Minimum value */ TS_STATS_SUM, /**< Sum of all value */ TS_STATS_AVG /**< Average of all values */ }; /** * @brief Allocate a new statistics object * * @return New statistics object or NULL if memory allocation failed */ ts_stats_t ts_stats_alloc(); /** * @brief Free statistics * * @param stats Statistics to free */ void ts_stats_free(ts_stats_t stats); /** * @brief Get statistics * * @param stats Statistics to read * @param type Type of statistics to get * @return Statistics value * * @see enum ts_stats_type */ int64_t ts_stats_get(ts_stats_t stats, enum ts_stats_type type); /** * @brief Increment thread statistics by one * * @param stats Statistics to add to * @param thread_id ID of thread */ void ts_stats_increment(ts_stats_t stats, int thread_id); /** * @brief Assign a value to a statistics element * * This sets the value for the specified thread. * * @param stats Statistics to set * @param value Value to set to * @param thread_id ID of thread */ void ts_stats_set(ts_stats_t stats, int value, int thread_id); /** * @brief Assign the maximum value to a statistics element * * This sets the value for the specified thread if the current value is smaller. * * @param stats Statistics to set * @param value Value to set to * @param thread_id ID of thread */ void ts_stats_set_max(ts_stats_t stats, int value, int thread_id); /** * @brief Assign the minimum value to a statistics element * * This sets the value for the specified thread if the current value is larger. * * @param stats Statistics to set * @param value Value to set to * @param thread_id ID of thread */ void ts_stats_set_min(ts_stats_t stats, int value, int thread_id); MXS_END_DECLS