qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] directory hierarchy


From: Paolo Bonzini
Subject: Re: [Qemu-devel] directory hierarchy
Date: Fri, 14 Sep 2012 15:53:36 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120828 Thunderbird/15.0

Il 14/09/2012 15:36, Peter Maydell ha scritto:
> On 14 September 2012 14:17, Paolo Bonzini <address@hidden> wrote:
>> here is a proposal for moving around 150 C files currently in the
>> toplevel directory to separate, well-delimited subdirectories.
> 
> No general objection (though some specific comments below). However
> I think it would be helpful if you could provide some descriptions of
> how your new subdirectories are defined. Otherwise the "well-delimited"
> bit is largely in your head and future new files aren't likely to
> respect it except by accident :-)

Good question.  I just tried to use some taste, so well-delimited is a
bit of a lie.  I mostly care that sysemu/, tools/, qga/ and user/ are
well-delimited, i.e. executables do not have sources from other
executables' directories, and similarly common/ is just for emulators.

>> Header
>> files would be moved for now in include/, preparing for subsequent
>> reorganization of headers.
> 
> Just in include/, or in include/qemu/ ? (IIRC Anthony was hoping
> to only move cleaned-up headers in there?)

I dislike include/qemu, for the same reason I dislike qemu-*. :)

Moving to include/ would be to clean up the top-level directory, withour
touching the source code.  If something can be moved directly to one of
the new source directories, that's also fine but I don't have high hopes.

>> Usually the files would keep their names, but I loathe names starting
>> with qemu-* so I took the occasion to rename those.
>>
>> This does not touch the hw/ directory, which is its own mess and worth a
>> separate discussion.  Cleaning it up may require introducing more
>> CONFIG_* symbols and moving stuff to libhw whenever possible (for
>> example if we want all NICs in hw/net, all RTCs in hw/rtc, etc. perhaps
>> with some exceptions for USB).
>>
>> Opinions, flames, "stop this guy"s are welcome as usual.
>>
>> Paolo
>>
>> block:
>> qemu-progress.c                 block/progress.c
> 
> This should go in util/, surely?

Yes.  I considered tools/ but right now it is in block-obj-y and I
haven't yet checked if the emulators depend on it.  But util/ is
probably better.

> 
>> block/coroutine:
> 
> If this is accompanied by saying "no more use of coroutines
> outside the block drivers" then I'm cool with that. Otherwise
> it's not really the right place.

There is no use right now outside the block drivers or the block jobs.
So s/more//.  Let's say this would discourage using coroutines outside
the block drivers, but if somebody has a really good reason it would
move to util/.  It's a two-line change.

>> exec:
>> cpu-exec.c
>> disas.c
>> exec.c
>> gdbstub.c
>> tci.c (note: TCI can't go in tcg/ for licensing reasons)
> 
> More to the point, it shouldn't go in tcg/ because it's not a
> TCG backend -- this is the interpreter part.

Ok.

>> sysemu:
> 
> So, sysemu.h is one of those dumping-ground header files. What's
> the dividing line that means a file goes into sysemu/ and not
> somewhere else?

It must only be used by the system emulators.

>> vl.c
> 
> While we're at it is there some less bonkers name than 'vl.c'
> for the system emulator main file?

I was about to do that, but I like to keep the historical name if it's
just a one-off...  Just some respect for Fabrice. :)

>> tcg:
>> tcg-runtime.c                   tcg/runtime.c
> 
> This is kind of breaking an existing division, where tcg/
> contains the code generator, and code outside tcg provides
> the execution environment for that generated code. In particular
> tcg-runtime.c is the QEMU implementation of a bunch of runtime
> functions and in theory some other runtime that embedded TCG
> could provide its own runtime helpers. (In practice TCG isn't
> as neatly separated from the rest of QEMU as you might like,
> if for instance you wanted to do TCG unit tests.)

If that would mean putting it in exec/, that would be fine.

>> util:
>> main-loop.c
> 
> This file is either misnamed or shouldn't be in util/...

It implements a generic main loop based on select.  It is used by system
emulators, qemu-io and qemu-nbd.

Paolo




reply via email to

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