QEMU is an open source machine emulator and virtualizer written in C. Overtime it has evolved multiple interfaces to interact with the outside world,and multiple internal APIs and abstractions to model and keep track of data.The talk will be a review of some of the challenges and trade-offs involved inmaking those abstractions work together.
Over time, QEMU has evolved multiple interfaces to interact with the outsideworld (command-line interface, configuration files, its monitor protocol), andmultiple internal APIs and abstractions to model and keep track of data(including configuration, device hierarchy, device state, etc).
Understanding the goals and limitations of each of those abstractions andfinding their way through the long list of acronyms (qdev, QOM, QAPI, QMP,VMState, QemuOpts, QObject, etc) can be intimidating to developers notfamiliar to QEMU. Sometimes each of them have conflicting world views,different goals and constraints, and interaction between them generateinteresting challenges to developers working on QEMU. The talk will be areview of some of the challenges and trade-offs involved in making thoseabstractions work together.
The target audience are developers that want to get more familiar with QEMUinternal APIs, or see what are the lessons learned (or not learned) from them. |