[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH v6 05/32] sysemu: system functions for replay
From: |
Pavel Dovgalyuk |
Subject: |
[Qemu-devel] [RFC PATCH v6 05/32] sysemu: system functions for replay |
Date: |
Mon, 08 Dec 2014 10:53:28 +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.
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 7a45a51..a46182f 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;
@@ -1115,7 +1115,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 4a7449a..5d20a29 100644
--- a/include/exec/exec-all.h
+++ b/include/exec/exec-all.h
@@ -212,6 +212,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 2098f1c..5afb44c 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 ba5c840..7177b71 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -806,6 +806,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 v6 00/32] Deterministic replay core, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 01/32] i386: partial revert of interrupt poll fix, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 02/32] cpu-exec: fix cpu_exec_nocache, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 03/32] icount: set can_do_io outside TB execution, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 04/32] replay: global variables and function stubs, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 05/32] sysemu: system functions for replay,
Pavel Dovgalyuk <=
- [Qemu-devel] [RFC PATCH v6 06/32] replay: internal functions for replay log, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 07/32] cpu-exec: reset exception_index correctly, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 08/32] icount: implement icount requesting, Pavel Dovgalyuk, 2014/12/08
[Qemu-devel] [RFC PATCH v6 09/32] replay: introduce icount event, Pavel Dovgalyuk, 2014/12/08