qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]