[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 08/16] cpu: add helper cpu_exists(), to check if CPU
From: |
Igor Mammedov |
Subject: |
[Qemu-devel] [PATCH 08/16] cpu: add helper cpu_exists(), to check if CPU with specified id exists |
Date: |
Tue, 16 Apr 2013 00:12:48 +0200 |
... it should be used only on slow path since it does recursive search
on /machine QOM tree for objects of TYPE_CPU
Signed-off-by: Igor Mammedov <address@hidden>
Reviewed-by: Paolo Bonzini <address@hidden>
---
v2:
* s/get_firmware_id()/get_arch_id()/ rebase fixup
* remove check for get_arch_id being NULL, since it's always defined
---
include/qom/cpu.h | 10 ++++++++++
qom/cpu.c | 21 +++++++++++++++++++++
2 files changed, 31 insertions(+)
diff --git a/include/qom/cpu.h b/include/qom/cpu.h
index 428aaf0..33d5e91 100644
--- a/include/qom/cpu.h
+++ b/include/qom/cpu.h
@@ -225,6 +225,16 @@ void run_on_cpu(CPUState *cpu, void (*func)(void *data),
void *data);
*/
CPUState *qemu_get_cpu(int index);
+/**
+ * cpu_exists:
+ * @id - guest exposed CPU ID to lookup
+ *
+ * Search for CPU with specified ID.
+ *
+ * Returns: true - CPU is found, false - CPU isn't found
+ */
+bool cpu_exists(int64_t id);
+
#ifndef CONFIG_USER_ONLY
typedef void (*CPUInterruptHandler)(CPUState *, int);
diff --git a/qom/cpu.c b/qom/cpu.c
index a13ddda..02fab9a 100644
--- a/qom/cpu.c
+++ b/qom/cpu.c
@@ -24,6 +24,27 @@
#include "qemu/notify.h"
#include "sysemu/sysemu.h"
+static int cpu_exist_cb(Object *obj, void *opaque)
+{
+ int64_t id = *(int64_t *)opaque;
+ Object *cpu_obj = object_dynamic_cast(obj, TYPE_CPU);
+
+ if (cpu_obj) {
+ CPUState *cpu = CPU(cpu_obj);
+ CPUClass *klass = CPU_GET_CLASS(cpu);
+
+ if (klass->get_arch_id(cpu) == id) {
+ return 1;
+ }
+ }
+ return object_child_foreach(obj, cpu_exist_cb, opaque);
+}
+
+bool cpu_exists(int64_t id)
+{
+ return cpu_exist_cb(qdev_get_machine(), &id) ? true : false;
+}
+
/* CPU hot-plug notifiers */
static NotifierList cpu_added_notifiers =
NOTIFIER_LIST_INITIALIZER(cpu_add_notifiers);
--
1.8.2
- [Qemu-devel] [PATCH 06/16] target-i386: pc: update rtc_cmos on CPU hot-plug, (continued)
- [Qemu-devel] [PATCH 06/16] target-i386: pc: update rtc_cmos on CPU hot-plug, Igor Mammedov, 2013/04/15
- [Qemu-devel] [PATCH 07/16] cpu: introduce get_arch_id() method and override it for target-i386, Igor Mammedov, 2013/04/15
- [Qemu-devel] [PATCH 08/16] cpu: add helper cpu_exists(), to check if CPU with specified id exists,
Igor Mammedov <=
- [Qemu-devel] [PATCH 09/16] acpi_piix4: add infrastructure to send CPU hot-plug GPE to guest, Igor Mammedov, 2013/04/15
- [Qemu-devel] [PATCH 10/16] target-i386: introduce apic-id property, Igor Mammedov, 2013/04/15