Browse Source
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>pull/232/head
committed by
Juan Quintela
4 changed files with 109 additions and 0 deletions
@ -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; |
|||
} |
|||
@ -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); |
|||
Loading…
Reference in new issue