Skip to content

Commit

Permalink
docs/devel: mention the spacing requirement for QOM
Browse files Browse the repository at this point in the history
We have a more complete document on QOM but we should at least mention
the style requirements in the style guide.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Message-Id: <20230424092249.58552-18-alex.bennee@linaro.org>
  • Loading branch information
stsquad committed Apr 27, 2023
1 parent 6a0057a commit 067109a
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 0 deletions.
2 changes: 2 additions & 0 deletions docs/devel/qom.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
.. _qom:

===========================
The QEMU Object Model (QOM)
===========================
Expand Down
37 changes: 37 additions & 0 deletions docs/devel/style.rst
Original file line number Diff line number Diff line change
Expand Up @@ -628,6 +628,43 @@ are still some caveats to beware of
QEMU Specific Idioms
********************

QEMU Object Model Declarations
==============================

The QEMU Object Model (QOM) provides a framework for handling objects
in the base C language. The first declaration of a storage or class
structure should always be the parent and leave a visual space between
that declaration and the new code. It is also useful to separate
backing for properties (options driven by the user) and internal state
to make navigation easier.

For a storage structure the first declaration should always be called
"parent_obj" and for a class structure the first member should always
be called "parent_class" as below:

.. code-block:: c
struct MyDeviceState {
DeviceState parent_obj;
/* Properties */
int prop_a;
char *prop_b;
/* Other stuff */
int internal_state;
};
struct MyDeviceClass {
DeviceClass parent_class;
void (*new_fn1)(void);
bool (*new_fn2)(CPUState *);
};
Note that there is no need to provide typedefs for QOM structures
since these are generated automatically by the QOM declaration macros.
See :ref:`qom` for more details.

Error handling and reporting
============================

Expand Down

0 comments on commit 067109a

Please sign in to comment.