From: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, peter.crosthwaite@xilinx.com,
alex.bennee@linaro.org, mark.burton@greensocs.com,
real@ispras.ru, batuzovk@ispras.ru,
maria.klimushenkova@ispras.ru, pavel.dovgaluk@ispras.ru,
pbonzini@redhat.com, afaerber@suse.de, fred.konrad@greensocs.com
Subject: [Qemu-devel] [RFC PATCH v6 05/32] sysemu: system functions for replay
Date: Mon, 08 Dec 2014 10:53:28 +0300 [thread overview]
Message-ID: <20141208075328.7108.98622.stgit@PASHA-ISP> (raw)
In-Reply-To: <20141208075255.7108.19079.stgit@PASHA-ISP>
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 <pavel.dovgaluk@ispras.ru>
---
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)
next prev parent reply other threads:[~2014-12-08 7:53 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-08 7:53 [Qemu-devel] [RFC PATCH v6 00/32] Deterministic replay core Pavel Dovgalyuk
2014-12-08 7:53 ` [Qemu-devel] [RFC PATCH v6 01/32] i386: partial revert of interrupt poll fix Pavel Dovgalyuk
2014-12-08 7:53 ` [Qemu-devel] [RFC PATCH v6 02/32] cpu-exec: fix cpu_exec_nocache Pavel Dovgalyuk
2014-12-08 7:53 ` [Qemu-devel] [RFC PATCH v6 03/32] icount: set can_do_io outside TB execution Pavel Dovgalyuk
2014-12-08 7:53 ` [Qemu-devel] [RFC PATCH v6 04/32] replay: global variables and function stubs Pavel Dovgalyuk
2014-12-08 7:53 ` Pavel Dovgalyuk [this message]
2014-12-08 7:53 ` [Qemu-devel] [RFC PATCH v6 06/32] replay: internal functions for replay log Pavel Dovgalyuk
2014-12-08 7:53 ` [Qemu-devel] [RFC PATCH v6 07/32] cpu-exec: reset exception_index correctly Pavel Dovgalyuk
2014-12-08 7:53 ` [Qemu-devel] [RFC PATCH v6 08/32] icount: implement icount requesting Pavel Dovgalyuk
2014-12-09 17:39 ` Paolo Bonzini
2014-12-10 6:35 ` Pavel Dovgalyuk
2014-12-10 7:41 ` Paolo Bonzini
2014-12-11 8:16 ` Pavel Dovgaluk
[not found] ` <5947.68890082396$1418285825@news.gmane.org>
2014-12-11 11:06 ` Paolo Bonzini
2014-12-08 7:53 ` [Qemu-devel] [RFC PATCH v6 09/32] replay: introduce icount event Pavel Dovgalyuk
2014-12-08 12:47 ` Gonglei
2014-12-08 7:53 ` [Qemu-devel] [RFC PATCH v6 10/32] i386: do not cross the pages boundaries in replay mode Pavel Dovgalyuk
2014-12-08 7:54 ` [Qemu-devel] [RFC PATCH v6 11/32] From 7abf2f72777958d395cfd01d97fe707cc06152b5 Mon Sep 17 00:00:00 2001 Pavel Dovgalyuk
2014-12-17 13:02 ` Alexander Graf
2014-12-08 7:54 ` [Qemu-devel] [RFC PATCH v6 12/32] From 185a3a47d08857a66332ae862b372a153ce92bb9 " Pavel Dovgalyuk
2014-12-08 7:54 ` [Qemu-devel] [RFC PATCH v6 13/32] From a0cb9e80ba0de409b5ad556109a1c71ce4d8ce19 " Pavel Dovgalyuk
2014-12-08 7:54 ` [Qemu-devel] [RFC PATCH v6 14/32] From 04bbd21134dd2c6b7309a7f5f2b780aae2757003 " Pavel Dovgalyuk
2014-12-08 7:54 ` [Qemu-devel] [RFC PATCH v6 15/32] cpu-exec: allow temporary disabling icount Pavel Dovgalyuk
2014-12-08 7:54 ` [Qemu-devel] [RFC PATCH v6 16/32] cpu-exec: invalidate nocache translation if they are interrupted Pavel Dovgalyuk
2014-12-08 7:54 ` [Qemu-devel] [RFC PATCH v6 17/32] cpu: replay instructions sequence Pavel Dovgalyuk
2014-12-08 7:54 ` [Qemu-devel] [RFC PATCH v6 18/32] replay: interrupts and exceptions Pavel Dovgalyuk
2014-12-08 7:54 ` [Qemu-devel] [RFC PATCH v6 19/32] replay: asynchronous events infrastructure Pavel Dovgalyuk
2014-12-08 7:54 ` [Qemu-devel] [RFC PATCH v6 20/32] timer: introduce new QEMU_CLOCK_VIRTUAL_RT clock Pavel Dovgalyuk
2014-12-08 7:54 ` [Qemu-devel] [RFC PATCH v6 21/32] cpus: make icount warp deterministic in replay mode Pavel Dovgalyuk
2014-12-08 7:55 ` [Qemu-devel] [RFC PATCH v6 22/32] timer: fix usage of clock functions Pavel Dovgalyuk
2014-12-08 7:55 ` [Qemu-devel] [RFC PATCH v6 23/32] replay: recording and replaying clock ticks Pavel Dovgalyuk
2014-12-08 7:55 ` [Qemu-devel] [RFC PATCH v6 24/32] replay: recording and replaying different timers Pavel Dovgalyuk
2014-12-08 7:55 ` [Qemu-devel] [RFC PATCH v6 25/32] replay: shutdown event Pavel Dovgalyuk
2014-12-08 7:55 ` [Qemu-devel] [RFC PATCH v6 26/32] replay: checkpoints Pavel Dovgalyuk
2014-12-08 7:55 ` [Qemu-devel] [RFC PATCH v6 27/32] replay: bottom halves Pavel Dovgalyuk
2014-12-08 7:55 ` [Qemu-devel] [RFC PATCH v6 28/32] replay: replay aio requests Pavel Dovgalyuk
2014-12-08 7:55 ` [Qemu-devel] [RFC PATCH v6 29/32] replay: thread pool Pavel Dovgalyuk
2014-12-08 7:55 ` [Qemu-devel] [RFC PATCH v6 30/32] replay: initialization and deinitialization Pavel Dovgalyuk
2014-12-08 7:55 ` [Qemu-devel] [RFC PATCH v6 31/32] replay: command line options Pavel Dovgalyuk
2014-12-08 7:56 ` [Qemu-devel] [RFC PATCH v6 32/32] replay: recording of the user input Pavel Dovgalyuk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20141208075328.7108.98622.stgit@PASHA-ISP \
--to=pavel.dovgaluk@ispras.ru \
--cc=afaerber@suse.de \
--cc=alex.bennee@linaro.org \
--cc=batuzovk@ispras.ru \
--cc=fred.konrad@greensocs.com \
--cc=maria.klimushenkova@ispras.ru \
--cc=mark.burton@greensocs.com \
--cc=pbonzini@redhat.com \
--cc=peter.crosthwaite@xilinx.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=real@ispras.ru \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.