[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: |
Marc-André Lureau |
Subject: |
Re: [Qemu-devel] [PATCH v5 3/5] qobject: replace qobject_incref/QINCREF qobject_decref/QDECREF |
Date: |
Thu, 19 Apr 2018 16:27:32 +0200 |
Hi
On Thu, Apr 19, 2018 at 8:16 AM, Markus Armbruster <address@hidden> wrote:
> 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?
git sed (as said in previous reviews). And fixing the new compiler warning iirc.
>> 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.
fixed thanks
>
>> * 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.
>> */
> [...]
>
--
Marc-André Lureau
- [Qemu-devel] [PATCH v5 4/5] qobject: modify qobject_ref() to return obj, (continued)