From: Jan Kiszka <jan.kiszka@web.de>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH] Introduce foreach_cpu shorthand
Date: Tue, 03 Jun 2008 21:56:06 +0200 [thread overview]
Message-ID: <4845A1D6.5050005@web.de> (raw)
Cleanup patch to consolidate open-coded iterations over all CPUs via a
foreach_cpu wrapper. Improves readability IMHO.
Signed-off-by: Jan Kiszka <jan.kiszka@web.de>
---
cpu-defs.h | 3 +++
exec.c | 8 +++-----
monitor.c | 6 +++---
vl.c | 4 ++--
4 files changed, 11 insertions(+), 10 deletions(-)
Index: b/cpu-defs.h
===================================================================
--- a/cpu-defs.h
+++ b/cpu-defs.h
@@ -171,4 +171,7 @@ typedef struct CPUTLBEntry {
\
const char *cpu_model_str;
+#define foreach_cpu(env) \
+ for (env = first_cpu; env != NULL; env = env->next_cpu)
+
#endif
Index: b/exec.c
===================================================================
--- a/exec.c
+++ b/exec.c
@@ -639,10 +639,9 @@ static inline void tb_phys_invalidate(Tr
/* remove the TB from the hash list */
h = tb_jmp_cache_hash_func(tb->pc);
- for(env = first_cpu; env != NULL; env = env->next_cpu) {
+ foreach_cpu(env)
if (env->tb_jmp_cache[h] == tb)
env->tb_jmp_cache[h] = NULL;
- }
/* suppress this TB from the two jump lists */
tb_jmp_remove(tb, 0);
@@ -1649,7 +1648,7 @@ void cpu_physical_memory_reset_dirty(ram
/* we modify the TLB cache so that the dirty bit will be set again
when accessing the range */
start1 = start + (unsigned long)phys_ram_base;
- for(env = first_cpu; env != NULL; env = env->next_cpu) {
+ foreach_cpu(env) {
for(i = 0; i < CPU_TLB_SIZE; i++)
tlb_reset_dirty_range(&env->tlb_table[0][i], start1, length);
for(i = 0; i < CPU_TLB_SIZE; i++)
@@ -2217,9 +2216,8 @@ void cpu_register_physical_memory(target
/* since each CPU stores ram addresses in its TLB cache, we must
reset the modified entries */
/* XXX: slow ! */
- for(env = first_cpu; env != NULL; env = env->next_cpu) {
+ foreach_cpu(env)
tlb_flush(env, 1);
- }
}
/* XXX: temporary until new memory mapping API */
Index: b/monitor.c
===================================================================
--- a/monitor.c
+++ b/monitor.c
@@ -269,7 +269,7 @@ static int mon_set_cpu(int cpu_index)
{
CPUState *env;
- for(env = first_cpu; env != NULL; env = env->next_cpu) {
+ foreach_cpu(env) {
if (env->cpu_index == cpu_index) {
mon_cpu = env;
return 0;
@@ -308,7 +308,7 @@ static void do_info_cpus(void)
/* just to set the default cpu if not already done */
mon_get_cpu();
- for(env = first_cpu; env != NULL; env = env->next_cpu) {
+ foreach_cpu(env) {
term_printf("%c CPU #%d:",
(env == mon_cpu) ? '*' : ' ',
env->cpu_index);
@@ -1297,7 +1297,7 @@ static void do_inject_nmi(int cpu_index)
{
CPUState *env;
- for (env = first_cpu; env != NULL; env = env->next_cpu)
+ foreach_cpu(env)
if (env->cpu_index == cpu_index) {
cpu_interrupt(env, CPU_INTERRUPT_NMI);
break;
Index: b/vl.c
===================================================================
--- a/vl.c
+++ b/vl.c
@@ -470,7 +470,7 @@ void hw_error(const char *fmt, ...)
fprintf(stderr, "qemu: hardware error: ");
vfprintf(stderr, fmt, ap);
fprintf(stderr, "\n");
- for(env = first_cpu; env != NULL; env = env->next_cpu) {
+ foreach_cpu(env) {
fprintf(stderr, "CPU #%d:\n", env->cpu_index);
#ifdef TARGET_I386
cpu_dump_state(env, stderr, fprintf, X86_DUMP_FPU);
@@ -6047,7 +6047,7 @@ static int qemu_loadvm_state(QEMUFile *f
ret = -1;
goto the_end;
}
- for (env = first_cpu; env != NULL; env = env->next_cpu)
+ foreach_cpu(env)
env->interrupt_request = 0;
total_len = qemu_get_be64(f);
end_pos = total_len + qemu_ftell(f);
next reply other threads:[~2008-06-03 19:57 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-03 19:56 Jan Kiszka [this message]
2008-06-03 20:18 ` [Qemu-devel] [PATCH] Introduce foreach_cpu shorthand Anthony Liguori
2008-06-04 12:39 ` Fabrice Bellard
2008-06-04 18:21 ` [Qemu-devel] " Jan Kiszka
2008-06-04 22:01 ` Thiemo Seufer
2008-06-04 22:29 ` Jan Kiszka
2008-06-05 1:26 ` Paul Brook
2008-06-05 7:11 ` Jan Kiszka
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=4845A1D6.5050005@web.de \
--to=jan.kiszka@web.de \
--cc=qemu-devel@nongnu.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).