[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] translate: remove file translate-all.h
From: |
Xuebing wang |
Subject: |
Re: [Qemu-devel] [PATCH] translate: remove file translate-all.h |
Date: |
Wed, 26 Feb 2014 20:19:42 +0800 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 |
Hi Peter/Paolo,
Thanks for replying.
1) I am wondering if some slight refactoring (in the sense of
superficial change of moving things around) can make
tcg/translationblock/cpu/exec/memory/softmmu more understandable,
especially for new engineers.
My goal is to explore the possibility of implementing tcg
multi-threading, in a similar fashion of kvm multi-threading. It's still
at early stage of a work-in-progress.
As I am new to qemu code base, I spent some time trying to figure out
the design. Examples are:
-- What does exec (as in the filename of exec.c) really mean?
-- What does "all" mean as in kvm-all,c (xen-all.c, translate-all.c)? I
assume "all" means "target independent". But, aren't other files (e.g.
block.c, gdbstub.c) target independent?
-- What is the difference between "all" and "common" as in
include/exec/cpu-all.h and cpu-common.h?
In my local repository, I did some refactoring. Examples are:
-- I renamed cpu-exec.c => tcg.c, to reflect the design that it's about
one of the 3 accelerators (tcg, kvm, xen).
-- I renamed cpus.c => vcpu.c (this can be tricky). My idea of the
object hierarchy is:
[ qom/Object ]
[ qdev/DeviceState ]
[ qom/CPUState ]
[ vcpu API (or qom/vcpu) ] [ CPUArchState ]
(in the other words, I am trying to abstract/model vcpu)
-- I renamed include/sysemu/cpus.h => include/exec/vcpu.h
-- And other changes. Examples:
1) cpu_exec_init_all() in exec.c is about memory, and its name is kind
of confusing
2) include/exec/address-spaces.h says below, but "git grep -nw
address-spaces.h" reveals a lot.
/*
* Internal interfaces between memory.c/exec.c/vl.c. Do not #include
unless
* you're one of them.
*/
I am wondering if we should slightly re-factor the organization of
files, thus new engineers will be easier to understand the design about
tcg/exec.
2) Theoretically, include/exec/exec-all.h should work when included from
*ANY files*, even mistakenly, right?
I hope this patch does NOT do any harm.
In my local repository, I split TranslationBlock related from it to be
another file include/translate.h.
I will see what is the best way to "git send-email" these refactoring
for the community to review, without causing too much confusion. The
purpose is to make the design easier to understand for new engineers.
Thanks again.
On 02/26/2014 06:34 PM, Paolo Bonzini wrote:
Il 26/02/2014 10:55, Peter Maydell ha scritto:
On 26 February 2014 09:25, Xuebing Wang <address@hidden> wrote:
This patch does below:
- Move the declaration of 2 translate functions from
translate-all.h into
include/exec/exec-all.h
- remove file translate-all.h
"translate-all.h" => "exec/exec-all.h" can be done by:
git grep -w "translate-all.h" | cut -d: -f1 |
xargs sed -i 's/\<translate-all.h\>/exec\/exec-all.h/g'
Note:
1) "exact whole word match" is considered.
2) We may move translate related from include/exec/exec-all.h into
include/exec/translate.h later.
Is there any particular benefit to this change? The function
prototypes go from being in a header only included by the file
that uses them to being in a header that's included by a lot
of other code...
Indeed, that's the point of translate-all.h.
Paolo
--
Thanks,
Xuebing Wang