aboutsummaryrefslogtreecommitdiff
path: root/monitor/qmp-cmds.c
diff options
context:
space:
mode:
authorMarkus Armbruster <armbru@redhat.com>2023-01-24 13:19:36 +0100
committerMarkus Armbruster <armbru@redhat.com>2023-02-04 07:56:54 +0100
commitaa09b3d5f8e2819d53a6fd81e655ddb3ef107a47 (patch)
tree5be9fd0f0c2fe1c31fbbd66ccb2f76c4c78cf0e4 /monitor/qmp-cmds.c
parentbab46b8180fdb0cf9a7adb7598f371d4457f51ca (diff)
stats: Move QMP commands from monitor/ to stats/
This moves these commands from MAINTAINERS section "QMP" to new section "Stats". Status is Orphan. Volunteers welcome! Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20230124121946.1139465-23-armbru@redhat.com>
Diffstat (limited to 'monitor/qmp-cmds.c')
-rw-r--r--monitor/qmp-cmds.c152
1 files changed, 0 insertions, 152 deletions
diff --git a/monitor/qmp-cmds.c b/monitor/qmp-cmds.c
index 4a8d1e9a15..ab23e52f97 100644
--- a/monitor/qmp-cmds.c
+++ b/monitor/qmp-cmds.c
@@ -25,13 +25,11 @@
#include "qapi/qapi-commands-acpi.h"
#include "qapi/qapi-commands-control.h"
#include "qapi/qapi-commands-misc.h"
-#include "qapi/qapi-commands-stats.h"
#include "qapi/type-helpers.h"
#include "hw/mem/memory-device.h"
#include "hw/acpi/acpi_dev_interface.h"
#include "hw/intc/intc.h"
#include "hw/rdma/rdma.h"
-#include "monitor/stats.h"
NameInfo *qmp_query_name(Error **errp)
{
@@ -174,153 +172,3 @@ ACPIOSTInfoList *qmp_query_acpi_ospm_status(Error **errp)
return head;
}
-
-typedef struct StatsCallbacks {
- StatsProvider provider;
- StatRetrieveFunc *stats_cb;
- SchemaRetrieveFunc *schemas_cb;
- QTAILQ_ENTRY(StatsCallbacks) next;
-} StatsCallbacks;
-
-static QTAILQ_HEAD(, StatsCallbacks) stats_callbacks =
- QTAILQ_HEAD_INITIALIZER(stats_callbacks);
-
-void add_stats_callbacks(StatsProvider provider,
- StatRetrieveFunc *stats_fn,
- SchemaRetrieveFunc *schemas_fn)
-{
- StatsCallbacks *entry = g_new(StatsCallbacks, 1);
- entry->provider = provider;
- entry->stats_cb = stats_fn;
- entry->schemas_cb = schemas_fn;
-
- QTAILQ_INSERT_TAIL(&stats_callbacks, entry, next);
-}
-
-static bool invoke_stats_cb(StatsCallbacks *entry,
- StatsResultList **stats_results,
- StatsFilter *filter, StatsRequest *request,
- Error **errp)
-{
- ERRP_GUARD();
- strList *targets = NULL;
- strList *names = NULL;
-
- if (request) {
- if (request->provider != entry->provider) {
- return true;
- }
- if (request->has_names && !request->names) {
- return true;
- }
- names = request->has_names ? request->names : NULL;
- }
-
- switch (filter->target) {
- case STATS_TARGET_VM:
- break;
- case STATS_TARGET_VCPU:
- if (filter->u.vcpu.has_vcpus) {
- if (!filter->u.vcpu.vcpus) {
- /* No targets allowed? Return no statistics. */
- return true;
- }
- targets = filter->u.vcpu.vcpus;
- }
- break;
- default:
- abort();
- }
-
- entry->stats_cb(stats_results, filter->target, names, targets, errp);
- if (*errp) {
- qapi_free_StatsResultList(*stats_results);
- *stats_results = NULL;
- return false;
- }
- return true;
-}
-
-StatsResultList *qmp_query_stats(StatsFilter *filter, Error **errp)
-{
- StatsResultList *stats_results = NULL;
- StatsCallbacks *entry;
- StatsRequestList *request;
-
- QTAILQ_FOREACH(entry, &stats_callbacks, next) {
- if (filter->has_providers) {
- for (request = filter->providers; request; request = request->next) {
- if (!invoke_stats_cb(entry, &stats_results, filter,
- request->value, errp)) {
- break;
- }
- }
- } else {
- if (!invoke_stats_cb(entry, &stats_results, filter, NULL, errp)) {
- break;
- }
- }
- }
-
- return stats_results;
-}
-
-StatsSchemaList *qmp_query_stats_schemas(bool has_provider,
- StatsProvider provider,
- Error **errp)
-{
- ERRP_GUARD();
- StatsSchemaList *stats_results = NULL;
- StatsCallbacks *entry;
-
- QTAILQ_FOREACH(entry, &stats_callbacks, next) {
- if (!has_provider || provider == entry->provider) {
- entry->schemas_cb(&stats_results, errp);
- if (*errp) {
- qapi_free_StatsSchemaList(stats_results);
- return NULL;
- }
- }
- }
-
- return stats_results;
-}
-
-void add_stats_entry(StatsResultList **stats_results, StatsProvider provider,
- const char *qom_path, StatsList *stats_list)
-{
- StatsResult *entry = g_new0(StatsResult, 1);
-
- entry->provider = provider;
- entry->qom_path = g_strdup(qom_path);
- entry->stats = stats_list;
-
- QAPI_LIST_PREPEND(*stats_results, entry);
-}
-
-void add_stats_schema(StatsSchemaList **schema_results,
- StatsProvider provider, StatsTarget target,
- StatsSchemaValueList *stats_list)
-{
- StatsSchema *entry = g_new0(StatsSchema, 1);
-
- entry->provider = provider;
- entry->target = target;
- entry->stats = stats_list;
- QAPI_LIST_PREPEND(*schema_results, entry);
-}
-
-bool apply_str_list_filter(const char *string, strList *list)
-{
- strList *str_list = NULL;
-
- if (!list) {
- return true;
- }
- for (str_list = list; str_list; str_list = str_list->next) {
- if (g_str_equal(string, str_list->value)) {
- return true;
- }
- }
- return false;
-}