qemu-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]