diff options
author | Jiang Jiacheng <jiangjiacheng@huawei.com> | 2023-02-03 15:35:18 +0800 |
---|---|---|
committer | Juan Quintela <quintela@redhat.com> | 2023-02-06 19:22:57 +0100 |
commit | 671326201dac8fe91222ba0045709f04a8ec3af4 (patch) | |
tree | f1d960e32d695fd1c8436afa71829434b54893d1 /migration | |
parent | ebfc57871506b3fe36cc41f69ee3ad31a34afd63 (diff) |
migration: Introduce interface query-migrationthreads
Introduce interface query-migrationthreads. The interface is used
to query information about migration threads and returns with
migration thread's name and its id.
Introduce threadinfo.c to manage threads with migration.
Signed-off-by: Jiang Jiacheng <jiangjiacheng@huawei.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Diffstat (limited to 'migration')
-rw-r--r-- | migration/meson.build | 1 | ||||
-rw-r--r-- | migration/threadinfo.c | 51 | ||||
-rw-r--r-- | migration/threadinfo.h | 28 |
3 files changed, 80 insertions, 0 deletions
diff --git a/migration/meson.build b/migration/meson.build index a9e7e18793..0d1bb9f96e 100644 --- a/migration/meson.build +++ b/migration/meson.build @@ -26,6 +26,7 @@ softmmu_ss.add(files( 'savevm.c', 'socket.c', 'tls.c', + 'threadinfo.c', ), gnutls) softmmu_ss.add(when: rdma, if_true: files('rdma.c')) diff --git a/migration/threadinfo.c b/migration/threadinfo.c new file mode 100644 index 0000000000..1de8b31855 --- /dev/null +++ b/migration/threadinfo.c @@ -0,0 +1,51 @@ +/* + * Migration Threads info + * + * Copyright (c) 2022 HUAWEI TECHNOLOGIES CO., LTD. + * + * Authors: + * Jiang Jiacheng <jiangjiacheng@huawei.com> + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + */ + +#include "threadinfo.h" + +static QLIST_HEAD(, MigrationThread) migration_threads; + +MigrationThread *MigrationThreadAdd(const char *name, int thread_id) +{ + MigrationThread *thread = g_new0(MigrationThread, 1); + thread->name = name; + thread->thread_id = thread_id; + + QLIST_INSERT_HEAD(&migration_threads, thread, node); + + return thread; +} + +void MigrationThreadDel(MigrationThread *thread) +{ + if (thread) { + QLIST_REMOVE(thread, node); + g_free(thread); + } +} + +MigrationThreadInfoList *qmp_query_migrationthreads(Error **errp) +{ + MigrationThreadInfoList *head = NULL; + MigrationThreadInfoList **tail = &head; + MigrationThread *thread = NULL; + + QLIST_FOREACH(thread, &migration_threads, node) { + MigrationThreadInfo *info = g_new0(MigrationThreadInfo, 1); + info->name = g_strdup(thread->name); + info->thread_id = thread->thread_id; + + QAPI_LIST_APPEND(tail, info); + } + + return head; +} diff --git a/migration/threadinfo.h b/migration/threadinfo.h new file mode 100644 index 0000000000..4d69423c0a --- /dev/null +++ b/migration/threadinfo.h @@ -0,0 +1,28 @@ +/* + * Migration Threads info + * + * Copyright (c) 2022 HUAWEI TECHNOLOGIES CO., LTD. + * + * Authors: + * Jiang Jiacheng <jiangjiacheng@huawei.com> + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + */ + +#include "qemu/queue.h" +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "qapi/qapi-commands-migration.h" + +typedef struct MigrationThread MigrationThread; + +struct MigrationThread { + const char *name; /* the name of migration thread */ + int thread_id; /* ID of the underlying host thread */ + QLIST_ENTRY(MigrationThread) node; +}; + +MigrationThread *MigrationThreadAdd(const char *name, int thread_id); + +void MigrationThreadDel(MigrationThread *info); |