[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v5 3/5] qobject: replace qobject_incref/QINCREF
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v5 3/5] qobject: replace qobject_incref/QINCREF qobject_decref/QDECREF |
Date: |
Thu, 19 Apr 2018 08:16:09 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux) |
Marc-André Lureau <address@hidden> writes:
> Now that we can safely call QOBJECT() on QObject * as well as its
> subtypes, we can have macros qobject_ref() / qobject_unref() that work
> everywhere instead of having to use QINCREF() / QDECREF() for QObject
> and qobject_incref() / qobject_decref() for its subtypes.
>
> Note that the new macros evaluate their argument exactly once, thus no
> need to shout them.
>
> Signed-off-by: Marc-André Lureau <address@hidden>
> ---
> scripts/qapi/events.py | 2 +-
> include/qapi/qmp/qnull.h | 2 +-
> include/qapi/qmp/qobject.h | 36 +++++-----
[...]
> tests/wdt_ib700-test.c | 14 ++--
> util/keyval.c | 12 ++--
> util/qemu-config.c | 4 +-
> docs/devel/qapi-code-gen.txt | 2 +-
> scripts/coccinelle/qobject.cocci | 8 +--
> 94 files changed, 606 insertions(+), 610 deletions(-)
The patch is not entirely mechanical (evidence: Eric's observations).
How did you create it?
> diff --git a/scripts/qapi/events.py b/scripts/qapi/events.py
> index 3dc523cf39..4426861ff1 100644
> --- a/scripts/qapi/events.py
> +++ b/scripts/qapi/events.py
> @@ -142,7 +142,7 @@ out:
> ''')
> ret += mcgen('''
> error_propagate(errp, err);
> - QDECREF(qmp);
> + qobject_unref(qmp);
> }
> ''')
> return ret
> diff --git a/include/qapi/qmp/qnull.h b/include/qapi/qmp/qnull.h
> index e8ea2c315a..75b29c6a39 100644
> --- a/include/qapi/qmp/qnull.h
> +++ b/include/qapi/qmp/qnull.h
> @@ -23,7 +23,7 @@ extern QNull qnull_;
>
> static inline QNull *qnull(void)
> {
> - QINCREF(&qnull_);
> + qobject_ref(&qnull_);
> return &qnull_;
> }
>
> diff --git a/include/qapi/qmp/qobject.h b/include/qapi/qmp/qobject.h
> index 0a7f800d58..e08fbb80b9 100644
> --- a/include/qapi/qmp/qobject.h
> +++ b/include/qapi/qmp/qobject.h
> @@ -16,16 +16,16 @@
> *
> * - Returning references: A function that returns an object may
> * return it as either a weak or a strong reference. If the reference
> - * is strong, you are responsible for calling QDECREF() on the reference
> + * is strong, you are responsible for calling qobject_unref() on the
> reference
Long line.
> * when you are done.
> *
> * If the reference is weak, the owner of the reference may free it at
> * any time in the future. Before storing the reference anywhere, you
> - * should call QINCREF() to make the reference strong.
> + * should call qobject_ref() to make the reference strong.
> *
> * - Transferring ownership: when you transfer ownership of a reference
> * by calling a function, you are no longer responsible for calling
> - * QDECREF() when the reference is no longer needed. In other words,
> + * qobject_unref() when the reference is no longer needed. In other words,
> * when the function returns you must behave as if the reference to the
> * passed object was weak.
> */
[...]
- Re: [Qemu-devel] [PATCH v5 2/5] qobject: use a QObjectBase_ struct, (continued)