[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH v10 03/24] sysemu: system functions for replay
From: |
Pavel Dovgalyuk |
Subject: |
[Qemu-devel] [RFC PATCH v10 03/24] sysemu: system functions for replay |
Date: |
Fri, 27 Feb 2015 16:10:04 +0300 |
User-agent: |
StGit/0.16 |
This patch removes "static" specifier from several qemu function to make
them visible to the replay module. It also invents several system functions
that will be used by replay.
Reviewed-by: Paolo Bonzini <address@hidden>
Signed-off-by: Pavel Dovgalyuk <address@hidden>
---
cpus.c | 4 ++--
include/exec/exec-all.h | 1 +
include/qom/cpu.h | 10 ++++++++++
include/sysemu/cpus.h | 1 +
translate-all.c | 8 ++++++++
5 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/cpus.c b/cpus.c
index 0cdd1d7..04124ca 100644
--- a/cpus.c
+++ b/cpus.c
@@ -88,7 +88,7 @@ static bool cpu_thread_is_idle(CPUState *cpu)
return true;
}
-static bool all_cpu_threads_idle(void)
+bool all_cpu_threads_idle(void)
{
CPUState *cpu;
@@ -1104,7 +1104,7 @@ bool qemu_cpu_is_self(CPUState *cpu)
return qemu_thread_is_self(cpu->thread);
}
-static bool qemu_in_vcpu_thread(void)
+bool qemu_in_vcpu_thread(void)
{
return current_cpu && qemu_cpu_is_self(current_cpu);
}
diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h
index 4a6237f..63fb1a3 100644
--- a/include/exec/exec-all.h
+++ b/include/exec/exec-all.h
@@ -214,6 +214,7 @@ static inline unsigned int tb_phys_hash_func(tb_page_addr_t
pc)
void tb_free(TranslationBlock *tb);
void tb_flush(CPUArchState *env);
+void tb_flush_all(void);
void tb_phys_invalidate(TranslationBlock *tb, tb_page_addr_t page_addr);
#if defined(USE_DIRECT_JUMP)
diff --git a/include/qom/cpu.h b/include/qom/cpu.h
index 16dc2f7..b5e1170 100644
--- a/include/qom/cpu.h
+++ b/include/qom/cpu.h
@@ -480,6 +480,16 @@ static inline bool cpu_has_work(CPUState *cpu)
bool qemu_cpu_is_self(CPUState *cpu);
/**
+ * qemu_in_vcpu_thread:
+ *
+ * Checks whether the caller is executing on the vCPU thread
+ * of the current vCPU.
+ *
+ * Returns: %true if called from vCPU's thread, %false otherwise.
+ */
+bool qemu_in_vcpu_thread(void);
+
+/**
* qemu_cpu_kick:
* @cpu: The vCPU to kick.
*
diff --git a/include/sysemu/cpus.h b/include/sysemu/cpus.h
index 3f162a9..86ae556 100644
--- a/include/sysemu/cpus.h
+++ b/include/sysemu/cpus.h
@@ -6,6 +6,7 @@ void qemu_init_cpu_loop(void);
void resume_all_vcpus(void);
void pause_all_vcpus(void);
void cpu_stop_current(void);
+bool all_cpu_threads_idle(void);
void cpu_synchronize_all_states(void);
void cpu_synchronize_all_post_reset(void);
diff --git a/translate-all.c b/translate-all.c
index 9f47ce7..cf30303 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -812,6 +812,14 @@ void tb_flush(CPUArchState *env1)
tcg_ctx.tb_ctx.tb_flush_count++;
}
+void tb_flush_all(void)
+{
+ CPUState *cpu;
+ for (cpu = first_cpu ; cpu != NULL ; cpu = CPU_NEXT(cpu)) {
+ tb_flush(cpu->env_ptr);
+ }
+}
+
#ifdef DEBUG_TB_CHECK
static void tb_invalidate_check(target_ulong address)
- [Qemu-devel] [RFC PATCH v10 00/24] Deterministic replay core, Pavel Dovgalyuk, 2015/02/27
- [Qemu-devel] [RFC PATCH v10 01/24] i386: partial revert of interrupt poll fix, Pavel Dovgalyuk, 2015/02/27
- [Qemu-devel] [RFC PATCH v10 02/24] replay: global variables and function stubs, Pavel Dovgalyuk, 2015/02/27
- [Qemu-devel] [RFC PATCH v10 03/24] sysemu: system functions for replay,
Pavel Dovgalyuk <=
- [Qemu-devel] [RFC PATCH v10 04/24] replay: internal functions for replay log, Pavel Dovgalyuk, 2015/02/27
- [Qemu-devel] [RFC PATCH v10 05/24] replay: introduce mutex to protect the replay log, Pavel Dovgalyuk, 2015/02/27
- [Qemu-devel] [RFC PATCH v10 06/24] replay: introduce icount event, Pavel Dovgalyuk, 2015/02/27
- [Qemu-devel] [RFC PATCH v10 07/24] cpu-exec: allow temporary disabling icount, Pavel Dovgalyuk, 2015/02/27
- [Qemu-devel] [RFC PATCH v10 08/24] cpu: replay instructions sequence, Pavel Dovgalyuk, 2015/02/27
- [Qemu-devel] [RFC PATCH v10 09/24] i386: interrupt poll processing, Pavel Dovgalyuk, 2015/02/27
- [Qemu-devel] [RFC PATCH v10 11/24] replay: asynchronous events infrastructure, Pavel Dovgalyuk, 2015/02/27
- [Qemu-devel] [RFC PATCH v10 10/24] replay: interrupts and exceptions, Pavel Dovgalyuk, 2015/02/27
- [Qemu-devel] [RFC PATCH v10 13/24] timer: replace time() with QEMU_CLOCK_HOST, Pavel Dovgalyuk, 2015/02/27
- [Qemu-devel] [RFC PATCH v10 12/24] replay: recording and replaying clock ticks, Pavel Dovgalyuk, 2015/02/27