|  | /* | 
|  | * Copyright (c) 2022 Oracle and/or its affiliates. | 
|  | * | 
|  | * This work is licensed under the terms of the GNU GPL, version 2. | 
|  | * See the COPYING file in the top-level directory. | 
|  | */ | 
|  |  | 
|  | #ifndef STATS_H | 
|  | #define STATS_H | 
|  |  | 
|  | #include "qapi/qapi-types-stats.h" | 
|  |  | 
|  | typedef void StatRetrieveFunc(StatsResultList **result, StatsTarget target, | 
|  | strList *names, strList *targets, Error **errp); | 
|  | typedef void SchemaRetrieveFunc(StatsSchemaList **result, Error **errp); | 
|  |  | 
|  | /* | 
|  | * Register callbacks for the QMP query-stats command. | 
|  | * | 
|  | * @provider: stats provider checked against QMP command arguments | 
|  | * @stats_fn: routine to query stats: | 
|  | * @schema_fn: routine to query stat schemas: | 
|  | */ | 
|  | void add_stats_callbacks(StatsProvider provider, | 
|  | StatRetrieveFunc *stats_fn, | 
|  | SchemaRetrieveFunc *schemas_fn); | 
|  |  | 
|  | /* | 
|  | * Helper routines for adding stats entries to the results lists. | 
|  | */ | 
|  | void add_stats_entry(StatsResultList **, StatsProvider, const char *id, | 
|  | StatsList *stats_list); | 
|  | void add_stats_schema(StatsSchemaList **, StatsProvider, StatsTarget, | 
|  | StatsSchemaValueList *); | 
|  |  | 
|  | /* | 
|  | * True if a string matches the filter passed to the stats_fn callback, | 
|  | * false otherwise. | 
|  | * | 
|  | * Note that an empty list means no filtering, i.e. all strings will | 
|  | * return true. | 
|  | */ | 
|  | bool apply_str_list_filter(const char *string, strList *list); | 
|  |  | 
|  | #endif /* STATS_H */ |