On 14 September 2012 14:17, Paolo Bonzini <pbonz...@redhat.com> 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