All of lore.kernel.org
 help / color / mirror / Atom feed
From: Xuebing wang <xbing6@gmail.com>
To: Paolo Bonzini <pbonzini@redhat.com>,
	Peter Maydell <peter.maydell@linaro.org>
Cc: "Blue Swirl" <blauwirbel@gmail.com>,
	"QEMU Developers" <qemu-devel@nongnu.org>,
	"Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] [PATCH] translate: remove file translate-all.h
Date: Wed, 26 Feb 2014 20:19:42 +0800	[thread overview]
Message-ID: <530DDBDE.1030603@gmail.com> (raw)
In-Reply-To: <530DC326.7020806@redhat.com>

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 <xbing6@gmail.com> 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	other threads:[~2014-02-26 12:20 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-26  9:25 [Qemu-devel] [PATCH] translate: remove file translate-all.h Xuebing Wang
2014-02-26  9:55 ` Peter Maydell
2014-02-26 10:34   ` Paolo Bonzini
2014-02-26 12:19     ` Xuebing wang [this message]

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=530DDBDE.1030603@gmail.com \
    --to=xbing6@gmail.com \
    --cc=afaerber@suse.de \
    --cc=blauwirbel@gmail.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --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 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.