Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
Signed-off-by: Pierrick Bouvier <[email protected]>
  • Loading branch information
pbo-linaro committed Nov 13, 2024
1 parent 17e2f68 commit 86d62ad
Showing 1 changed file with 245 additions and 4 deletions.
249 changes: 245 additions & 4 deletions docs/codebase/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,250 @@
Codebase
========

This section will present the various parts of QEMU and where you can find
associated code.
This section present the various parts of QEMU and how codebase is organized.
Beyond giving succint descriptions, the goal is to offer links to various
parts of the documentation/codebase.

::
An exhaustive list of subsystems and files associated can be found in
MAINTAINERS file.

find -type d | grep -v build/ | grep -v \.git
./po: translation files

./monitor: HMP & QMP

TCG Plugins
./plugins: core implementation

./linux-user: User mode implementation. Contains one folder per arch.
Examples: ./linux-user/i386
./linux-user/alpha

./stubs: various stubs (empty functions) used to compile QEMU is specific
configurations.

./accel: Infrastructure and architecture agnostic code related to the various
accelerators supported by QEMU (tcg, hvf, kvm, ...). Contains definition for
operations that will be implemented per target.

./tests: QEMU test suite

./tests/multiboot: test multiboot functionality for x86_64/i386
./tests/docker: code and scripts to create containers used in CI
./tests/tsan: suppressions file for thread sanitizer
./tests/uefi-test-tools: Test tool for UEFI support
./tests/decode: testsuite for decodetree tool
./tests/tcg: tcg related tests. Contains code per architecture (subfolder) and
multiarch tests as well.

./tests/avocado: Functional tests booting full VM using Avocado framework. Most
of those tests will be transformed and moved into ./tests/functional in the
future.

./tests/fp: QEMU testsuite for soft float implementation

.gitlab-ci.d/: CI scripts and yaml
./tests/lcitool: Generate dockerfiles for CI containers
./tests/data: Various data for various tests
./tests/qapi-schema: Test script and data for QAPI
./tests/migration: Test scripts and data for VM migration
./tests/qemu-iotests: Disk image formats and block feature
./tests/functional: Functional tests (full VM boot)
./tests/qtest: Device emulation testing
./tests/unit: Unit tests for QEMU
./tests/tcg: TCG related testing

./pc-bios: Contains pre-built firmware binaries and boot images, ready to use in
QEMU without compilation.

./system: QEMU system mode implementation (cpu, MMU, boot support)

./tcg: TCG related code. Contains one subfolder per host supported architecture.
./tcg/s390x
./tcg/aarch64

./io: I/O channels implementation.

./util: Various utility code reused by other parts of QEMU.

./dump: Contains code to dump memory of a running VM
./stats: QMP and HMP stats implementation

./gdbstub: GDB server implementation

./configs: Set of makefiles defining configurations to build QEMU

./ebpf: eBPF program support in QEMU

./migration: Migration framework.

./scsi: SCSI implementation, used by scsi devices.

./qobject: QEMU Object implementation.

./net: Network implementation in QEMU

./target: Contains code for all target architectures supported (one subfolder
per arch). For every architecture, you can find accelerator specific
implementations.

./roms: Contains source code for various firmware and ROMs, which can be
compiled if custom or updated versions are needed.

./replay: QEMU record/replay implementation.

./qga: QEMU Guest agent implementation.

./qom: QEMU Object model implementation, with HMP & QMP associated commands.

./libdecnumber: Import of gcc library, used to implement decimal number
arithmetic.

./hw: Devices implementation. Devices are categorized by device type/protocol
and placed in associated subfolder.

./trace: Trace framework. Used to print information associated to various events
during execution.

./audio: Audio (host) support.

./include: All headers associated to different subsystems in QEMU. Hierachy used
mirrors source code organization and naming.

./host: Various host architecture specific header files.

./crypto: Cryptographic algorithms used in QEMU.

./qapi: QAPI implementation.

./backends: Various backends used by devices.

./bsd-user: User-mode for BSD.

./gdb-xml: Sets of XML files describing architecture and used by gdbstub.

./build: Where the code built goes!

./storage-daemon: QEMU Storage daemon implementation.

./chardev: Backends used for char devices implementation.

./semihosting: QEMU Semihosting implementation.

./fpu: Soft float implementation.

./fsdev: virtio fs implementation.

./linux-headers: A subset of headers import for Linux used for implementing KVM
and user-mode.

./contrib: Community contributed devices/plugins/tools.

./block: Block devices implementation.

./python: Python part of our build/test system.

./authz: QEMU Authorization framework.

./scripts: A collection of scripts used in build and test systems, and various
tools for QEMU codebase and execution traces.

./nbd: QEMU NBD server.

./common-user
./common-user/host
./common-user/host/s390x
./common-user/host/aarch64
./common-user/host/ppc64
./common-user/host/loongarch64
./common-user/host/arm
./common-user/host/ppc
./common-user/host/x86_64
./common-user/host/riscv
./common-user/host/mips
./common-user/host/i386
./common-user/host/sparc64
./rust
./rust/qemu-api
./rust/qemu-api/tests
./rust/qemu-api/src
./rust/hw
./rust/hw/char
./rust/hw/char/pl011
./rust/hw/char/pl011/src
./rust/qemu-api-macros
./rust/qemu-api-macros/src
./disas
./subprojects
./subprojects/packagefiles
./subprojects/packagefiles/berkeley-testfloat-3
./subprojects/packagefiles/syn-2-rs
./subprojects/packagefiles/proc-macro-error-attr-1-rs
./subprojects/packagefiles/proc-macro2-1-rs
./subprojects/packagefiles/itertools-0.11-rs
./subprojects/packagefiles/unicode-ident-1-rs
./subprojects/packagefiles/arbitrary-int-1-rs
./subprojects/packagefiles/bilge-impl-0.2-rs
./subprojects/packagefiles/berkeley-softfloat-3
./subprojects/packagefiles/quote-1-rs
./subprojects/packagefiles/either-1-rs
./subprojects/packagefiles/bilge-0.2-rs
./subprojects/packagefiles/proc-macro-error-1-rs
./subprojects/berkeley-testfloat-3
./subprojects/berkeley-testfloat-3/doc
./subprojects/berkeley-testfloat-3/source
./subprojects/berkeley-testfloat-3/source/subj-C
./subprojects/berkeley-testfloat-3/build
./subprojects/keycodemapdb
./subprojects/keycodemapdb/tests
./subprojects/keycodemapdb/tests/rust-test
./subprojects/keycodemapdb/tests/rust-test/src
./subprojects/keycodemapdb/data
./subprojects/keycodemapdb/tools
./subprojects/libvduse
./subprojects/libvduse/standard-headers
./subprojects/libvduse/include
./subprojects/libvduse/linux-headers
./subprojects/unicode-ident-1-rs
./subprojects/libvhost-user
./subprojects/libvhost-user/standard-headers
./subprojects/libvhost-user/include
./subprojects/berkeley-softfloat-3
./subprojects/berkeley-softfloat-3/doc
./subprojects/berkeley-softfloat-3/source
./subprojects/berkeley-softfloat-3/source/ARM-VFPv2-defaultNaN
./subprojects/berkeley-softfloat-3/source/ARM-VFPv2
./subprojects/berkeley-softfloat-3/source/include
./subprojects/berkeley-softfloat-3/source/8086
./subprojects/berkeley-softfloat-3/source/RISCV
./subprojects/berkeley-softfloat-3/source/8086-SSE
./subprojects/berkeley-softfloat-3/build
./ui
./ui/icons
./ui/shader
./docs
./docs/system
./docs/system/s390x
./docs/system/arm
./docs/system/ppc
./docs/system/devices
./docs/system/riscv
./docs/system/loongarch
./docs/system/openrisc
./docs/system/i386
./docs/config
./docs/codebase
./docs/sphinx
./docs/sphinx/__pycache__
./docs/user
./docs/spin
./docs/how-to
./docs/devel
./docs/devel/migration
./docs/devel/testing
./docs/_templates
./docs/sphinx-static
./docs/interop
./docs/tools
./docs/glossary
./docs/specs
./docs/about

0 comments on commit 86d62ad

Please sign in to comment.