qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] directory hierarchy


From: Peter Maydell
Subject: Re: [Qemu-devel] directory hierarchy
Date: Fri, 14 Sep 2012 14:36:58 +0100

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 :-)

> 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?)

> 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:
> aes.c
> aio.c
> async.c
> block.c
> blockjob.c (with plans to move it in sysemu/block)
> nbd.c
> qemu-progress.c                 block/progress.c

This should go in util/, surely?

> block/coroutine:
> coroutine-gthread.c             block/coroutine/gthread.c
> coroutine-sigaltstack.c         block/coroutine/sigaltstack.c
> coroutine-ucontext.c            block/coroutine/ucontext.c
> coroutine-win32.c               block/coroutine/win32.c
> qemu-coroutine-io.c             block/coroutine/io.c
> qemu-coroutine-lock.c           block/coroutine/lock.c
> qemu-coroutine-sleep.c          block/coroutine/sleep.c
> qemu-coroutine.c                block/coroutine/coroutine.c

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.

> block/drivers:
> block/blkdebug.c
> block/blkverify.c
> block/bochs.c
> block/cloop.c
> block/cow.c
> block/curl.c
> block/dmg.c
> block/iscsi.c
> block/mirror.c
> block/nbd.c
> block/parallels.c
> block/qcow.c
> block/qcow2-cache.c
> block/qcow2-cluster.c
> block/qcow2-refcount.c
> block/qcow2-snapshot.c
> block/qcow2.c
> block/qed-check.c
> block/qed-cluster.c
> block/qed-gencb.c
> block/qed-l2-cache.c
> block/qed-table.c
> block/qed.c
> block/raw-posix.c
> block/raw-win32.c
> block/raw.c
> block/rbd.c
> block/sheepdog.c
> block/vdi.c
> block/vmdk.c
> block/vpc.c
> block/vvfat.c
> linux-aio.c
> posix-aio-compat.c
>
> 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.

> translate-all.c


>
> hw:
> hw/dma.c                hw/i8257.c
> dma-helpers.c           hw/dma.c
>
> libdis:
> alpha-dis.c             libdis/alpha.c
> arm-dis.c               libdis/arm.c
> cris-dis.c                      libdis/cris.c
> hppa-dis.c                      libdis/hppa.c
> i386-dis.c                      libdis/i386.c
> ia64-dis.c                      libdis/ia64.c
> lm32-dis.c                      libdis/lm32.c
> m68k-dis.c                      libdis/m68k.c
> microblaze-dis.c                libdis/microblaze.c
> mips-dis.c                      libdis/mips.c
> ppc-dis.c                       libdis/ppc.c
> s390-dis.c                      libdis/s390.c
> sh4-dis.c                       libdis/sh4.c
> sparc-dis.c                     libdis/sparc.c
> tci-dis.c                       libdis/tci.c
>
> net:
> net.c
>
> qapi:
> error.c
>
> qga:
> qemu-ga.c                       qga/main.c
>
> qobject:
> json-lexer.c
> json-parser.c
> json-streamer.c
> qbool.c
> qdict.c
> qerror.c
> qfloat.c
> qint.c
> qjson.c
> qlist.c
> qstring.c
>
> 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?

> arch_init.c
> balloon.c
> cpus.c
> cputlb.c
> cursor.c
> device_tree.c
> dump-stub.c
> dump.c
> ioport.c
> kvm-all.c
> kvm-stub.c
> memory.c
> memory_mapping-stub.c
> memory_mapping.c
> os-posix.c
> os-win32.c
> pflib.c
> qemu-error.c                    sysemu/error.c
> qemu-seccomp.c                  sysemu/seccomp.c
> qtest.c
> vl.c

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

> xen-all.c
> xen-mapcache.c
> xen-stub.c
> qemu-options.hx
>
> sysemu/block:
> block/stream.c
> blockdev.c
>
> sysemu/bt:
> bt-host.c               sysemu/bt/host.c
> bt-vhci.c               sysemu/bt/vhci.c
>
> sysemu/char:
> qemu-char.c                     sysemu/char/chardev.c
> qemu-sockets.c                  sysemu/char/sockets.c
> spice-qemu-char.c               sysemu/char/spice.c
>
> sysemu/migration:
> block-migration.c       migration/block.c
> buffered_file.c
> migration-exec.c
> migration-fd.c
> migration-tcp.c
> migration-unix.c
> migration.c
> page_cache.c
> savevm.c
>
> sysemu/monitor:
> hmp.c
> monitor.c
> qmp.c
> readline.c
> hmp-commands.hx
> qmp-commands.hx
>
> 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.)

> tools:
> cmd.c
> qemu-bridge-helper.c
> qemu-img.c
> qemu-img-cmds.hx
> qemu-io.c
> qemu-nbd.c
> qemu-tool.c                     tools/stub.c
>
> ui:
> console.c
> input.c
>
> user:
> qemu-user.c                     user/stub.c
> thunk.c
> user-exec.c                     user/cpu-exec.c
>
> util:
> acl.c
> bitmap.c
> bitops.c
> cache-utils.c
> compatfd.c
> cutils.c
> envlist.c
> event_notifier.c
> host-utils.c
> iohandler.c
> iov.c
> main-loop.c

This file is either misnamed or shouldn't be in util/...

> module.c
> notify.c
> osdep.c
> oslib-posix.c
> oslib-win32.c
> path.c
> qemu-config.c                   util/config.c
> qemu-log.c                      util/log.c
> qemu-option.c                   util/option.c
> qemu-thread-posix.c             util/thread-posix.c
> qemu-thread-win32.c             util/thread-win32.c
> qemu-timer-common.c             util/clock.c
> qemu-timer.c                    util/timer.c

-- PMM



reply via email to

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