This was written by ECA based on it's initial understanding of the code base. It's mostly quick facts and pointers to common tasks.
Signed-off-by: Alex Bennée <[email protected]> --- ajb: - I made a slight tweak to use pyenv to run single tests --- AGENTS.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 AGENTS.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000000..5b54763f4b1 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,18 @@ +# QEMU Agent Guide + +## Build & Test +- **Build**: `ninja -C build` (from build directory) or `make` +- **Test All**: `make check` +- **Single Test**: `./pyvenv/bin/meson test <testname>` (e.g., `meson test qtest-x86_64/boot-serial-test`) +- **Suites**: `make check-unit`, `make check-qtest`, `make check-functional`, `make check-rust` +- **Debug**: Append `V=1` for verbose output or `DEBUG=1` for interactive test debugging. + +## Code Style +- **Formatting**: 4-space indents, NO tabs, 80-char line limit (max 100). +- **C Braces**: Mandatory for all blocks (if/while/for). Open brace on same line (except functions). +- **C Includes**: `#include "qemu/osdep.h"` MUST be the first include in every `.c` file. +- **C Comments**: Use `/* ... */` only. No `//` comments. +- **Naming**: `snake_case` for variables and functions; `CamelCase` for types and enums. +- **Memory**: Use GLib (`g_malloc`, `g_free`, `g_autofree`) or QEMU (`qemu_memalign`) APIs. No `malloc`. +- **Errors**: Use `error_report()` or `error_setg()`. Avoid `printf` for errors. +- **Lints**: Run `./scripts/checkpatch.pl` on C patches. Use `make clippy` and `make rustfmt` for Rust. -- 2.47.3
