diff mbox series

[v4,11/29] typedefs: Separate incomplete types and function types

Message ID 20190812052359.30071-12-armbru@redhat.com
State New
Headers show
Series Tame a few "touch this, recompile the world" headers | expand

Commit Message

Markus Armbruster Aug. 12, 2019, 5:23 a.m. UTC
While there, drop the obsolete file comment.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 include/qemu/typedefs.h | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

Comments

Alex Bennée Aug. 12, 2019, 10:55 a.m. UTC | #1
Markus Armbruster <armbru@redhat.com> writes:

> While there, drop the obsolete file comment.
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
>  include/qemu/typedefs.h | 12 ++++++++----
>  1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h
> index fcdaae58c4..29346648d4 100644
> --- a/include/qemu/typedefs.h
> +++ b/include/qemu/typedefs.h
> @@ -1,10 +1,10 @@
>  #ifndef QEMU_TYPEDEFS_H
>  #define QEMU_TYPEDEFS_H
>
> -/* A load of opaque types so that device init declarations don't have to
> -   pull in all the real definitions.  */
> -
> -/* Please keep this list in case-insensitive alphabetical order */
> +/*
> + * Incomplete struct types

Maybe expand this a little...

  "Incomplete struct types for modules that don't need the complete
  definitions but still pass around typed variables."?

Otherwise:

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>


> + * Please keep this list in case-insensitive alphabetical order.
> + */
>  typedef struct AdapterInfo AdapterInfo;
>  typedef struct AddressSpace AddressSpace;
>  typedef struct AioContext AioContext;
> @@ -101,6 +101,10 @@ typedef struct SHPCDevice SHPCDevice;
>  typedef struct SSIBus SSIBus;
>  typedef struct VirtIODevice VirtIODevice;
>  typedef struct Visitor Visitor;
> +
> +/*
> + * Function types
> + */
>  typedef void SaveStateHandler(QEMUFile *f, void *opaque);
>  typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);


--
Alex Bennée
Markus Armbruster Aug. 12, 2019, 1:37 p.m. UTC | #2
Alex Bennée <alex.bennee@linaro.org> writes:

> Markus Armbruster <armbru@redhat.com> writes:
>
>> While there, drop the obsolete file comment.
>>
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>> ---
>>  include/qemu/typedefs.h | 12 ++++++++----
>>  1 file changed, 8 insertions(+), 4 deletions(-)
>>
>> diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h
>> index fcdaae58c4..29346648d4 100644
>> --- a/include/qemu/typedefs.h
>> +++ b/include/qemu/typedefs.h
>> @@ -1,10 +1,10 @@
>>  #ifndef QEMU_TYPEDEFS_H
>>  #define QEMU_TYPEDEFS_H
>>
>> -/* A load of opaque types so that device init declarations don't have to
>> -   pull in all the real definitions.  */
>> -
>> -/* Please keep this list in case-insensitive alphabetical order */
>> +/*
>> + * Incomplete struct types
>
> Maybe expand this a little...
>
>   "Incomplete struct types for modules that don't need the complete
>   definitions but still pass around typed variables."?

If we explain proper use of qemu/typedefs.h in HACKING, as discussed in
review of v1[*], we could point there.

> Otherwise:
>
> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>

Thanks!

>> + * Please keep this list in case-insensitive alphabetical order.
>> + */
>>  typedef struct AdapterInfo AdapterInfo;
>>  typedef struct AddressSpace AddressSpace;
>>  typedef struct AioContext AioContext;
>> @@ -101,6 +101,10 @@ typedef struct SHPCDevice SHPCDevice;
>>  typedef struct SSIBus SSIBus;
>>  typedef struct VirtIODevice VirtIODevice;
>>  typedef struct Visitor Visitor;
>> +
>> +/*
>> + * Function types
>> + */
>>  typedef void SaveStateHandler(QEMUFile *f, void *opaque);
>>  typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);
>
>
> --
> Alex Bennée
Markus Armbruster Aug. 13, 2019, 5:43 a.m. UTC | #3
Markus Armbruster <armbru@redhat.com> writes:

> Alex Bennée <alex.bennee@linaro.org> writes:
>
>> Markus Armbruster <armbru@redhat.com> writes:
>>
>>> While there, drop the obsolete file comment.
>>>
>>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>>> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>> ---
>>>  include/qemu/typedefs.h | 12 ++++++++----
>>>  1 file changed, 8 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h
>>> index fcdaae58c4..29346648d4 100644
>>> --- a/include/qemu/typedefs.h
>>> +++ b/include/qemu/typedefs.h
>>> @@ -1,10 +1,10 @@
>>>  #ifndef QEMU_TYPEDEFS_H
>>>  #define QEMU_TYPEDEFS_H
>>>
>>> -/* A load of opaque types so that device init declarations don't have to
>>> -   pull in all the real definitions.  */
>>> -
>>> -/* Please keep this list in case-insensitive alphabetical order */
>>> +/*
>>> + * Incomplete struct types
>>
>> Maybe expand this a little...
>>
>>   "Incomplete struct types for modules that don't need the complete
>>   definitions but still pass around typed variables."?
>
> If we explain proper use of qemu/typedefs.h in HACKING, as discussed in
> review of v1[*], we could point there.

Perhaps rewriting the obsolete file comment would be better.  Something
like this:

    /*
     * This header is for selectively avoiding #include just to get a
     * typedef name.
     *
     * Declaring a typedef name in its "obvious" place can result in
     * inclusion cycles, in particular for complete struct and union
     * types that need more types for their members.  It can also result
     * in headers pulling in many more headers, slowing down builds.
     *
     * You can break such cycles and unwanted dependencies by declaring
     * the typedef name here.
     *
     * For struct types used in only a few headers, judicious use of the
     * struct tag instead of the typedef name is commonly preferable.
     */

    /*
     * Incomplete struct types
     * Please keep this list in case-insensitive alphabetical order.
     */
    typedef struct AdapterInfo AdapterInfo;
    [...]

    /*
     * Pointer types
     * Such typedefs should be limited to cases where the typedef's users
     * are oblivious of its "pointer-ness".
     * Please keep this list in case-insensitive alphabetical order.
     */
    typedef struct IRQState *qemu_irq;

    /*
     * Function types
     */
    typedef void SaveStateHandler(QEMUFile *f, void *opaque);
    typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);
    typedef void (*qemu_irq_handler)(void *opaque, int n, int level);

What do you think?

[...]
Alex Bennée Aug. 13, 2019, 10:44 a.m. UTC | #4
Markus Armbruster <armbru@redhat.com> writes:

> Markus Armbruster <armbru@redhat.com> writes:
>
>> Alex Bennée <alex.bennee@linaro.org> writes:
>>
>>> Markus Armbruster <armbru@redhat.com> writes:
>>>
>>>> While there, drop the obsolete file comment.
>>>>
>>>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>>>> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>>> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>>> ---
>>>>  include/qemu/typedefs.h | 12 ++++++++----
>>>>  1 file changed, 8 insertions(+), 4 deletions(-)
>>>>
>>>> diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h
>>>> index fcdaae58c4..29346648d4 100644
>>>> --- a/include/qemu/typedefs.h
>>>> +++ b/include/qemu/typedefs.h
>>>> @@ -1,10 +1,10 @@
>>>>  #ifndef QEMU_TYPEDEFS_H
>>>>  #define QEMU_TYPEDEFS_H
>>>>
>>>> -/* A load of opaque types so that device init declarations don't have to
>>>> -   pull in all the real definitions.  */
>>>> -
>>>> -/* Please keep this list in case-insensitive alphabetical order */
>>>> +/*
>>>> + * Incomplete struct types
>>>
>>> Maybe expand this a little...
>>>
>>>   "Incomplete struct types for modules that don't need the complete
>>>   definitions but still pass around typed variables."?
>>
>> If we explain proper use of qemu/typedefs.h in HACKING, as discussed in
>> review of v1[*], we could point there.
>
> Perhaps rewriting the obsolete file comment would be better.  Something
> like this:
>
>     /*
>      * This header is for selectively avoiding #include just to get a
>      * typedef name.
>      *
>      * Declaring a typedef name in its "obvious" place can result in
>      * inclusion cycles, in particular for complete struct and union
>      * types that need more types for their members.  It can also result
>      * in headers pulling in many more headers, slowing down builds.
>      *
>      * You can break such cycles and unwanted dependencies by declaring
>      * the typedef name here.
>      *
>      * For struct types used in only a few headers, judicious use of the
>      * struct tag instead of the typedef name is commonly preferable.
>      */
>
>     /*
>      * Incomplete struct types
>      * Please keep this list in case-insensitive alphabetical order.
>      */
>     typedef struct AdapterInfo AdapterInfo;
>     [...]
>
>     /*
>      * Pointer types
>      * Such typedefs should be limited to cases where the typedef's users
>      * are oblivious of its "pointer-ness".
>      * Please keep this list in case-insensitive alphabetical order.
>      */
>     typedef struct IRQState *qemu_irq;
>
>     /*
>      * Function types
>      */
>     typedef void SaveStateHandler(QEMUFile *f, void *opaque);
>     typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);
>     typedef void (*qemu_irq_handler)(void *opaque, int n, int level);
>
> What do you think?

A definite improvement on what is currently there ;-)

>
> [...]


--
Alex Bennée
Markus Armbruster Aug. 13, 2019, 11:16 a.m. UTC | #5
Alex Bennée <alex.bennee@linaro.org> writes:

> Markus Armbruster <armbru@redhat.com> writes:
>
>> Markus Armbruster <armbru@redhat.com> writes:
>>
>>> Alex Bennée <alex.bennee@linaro.org> writes:
>>>
>>>> Markus Armbruster <armbru@redhat.com> writes:
>>>>
>>>>> While there, drop the obsolete file comment.
>>>>>
>>>>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>>>>> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>>>> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>>>> ---
>>>>>  include/qemu/typedefs.h | 12 ++++++++----
>>>>>  1 file changed, 8 insertions(+), 4 deletions(-)
>>>>>
>>>>> diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h
>>>>> index fcdaae58c4..29346648d4 100644
>>>>> --- a/include/qemu/typedefs.h
>>>>> +++ b/include/qemu/typedefs.h
>>>>> @@ -1,10 +1,10 @@
>>>>>  #ifndef QEMU_TYPEDEFS_H
>>>>>  #define QEMU_TYPEDEFS_H
>>>>>
>>>>> -/* A load of opaque types so that device init declarations don't have to
>>>>> -   pull in all the real definitions.  */
>>>>> -
>>>>> -/* Please keep this list in case-insensitive alphabetical order */
>>>>> +/*
>>>>> + * Incomplete struct types
>>>>
>>>> Maybe expand this a little...
>>>>
>>>>   "Incomplete struct types for modules that don't need the complete
>>>>   definitions but still pass around typed variables."?
>>>
>>> If we explain proper use of qemu/typedefs.h in HACKING, as discussed in
>>> review of v1[*], we could point there.
>>
>> Perhaps rewriting the obsolete file comment would be better.  Something
>> like this:
>>
>>     /*
>>      * This header is for selectively avoiding #include just to get a
>>      * typedef name.
>>      *
>>      * Declaring a typedef name in its "obvious" place can result in
>>      * inclusion cycles, in particular for complete struct and union
>>      * types that need more types for their members.  It can also result
>>      * in headers pulling in many more headers, slowing down builds.
>>      *
>>      * You can break such cycles and unwanted dependencies by declaring
>>      * the typedef name here.
>>      *
>>      * For struct types used in only a few headers, judicious use of the
>>      * struct tag instead of the typedef name is commonly preferable.
>>      */
>>
>>     /*
>>      * Incomplete struct types
>>      * Please keep this list in case-insensitive alphabetical order.
>>      */
>>     typedef struct AdapterInfo AdapterInfo;
>>     [...]
>>
>>     /*
>>      * Pointer types
>>      * Such typedefs should be limited to cases where the typedef's users
>>      * are oblivious of its "pointer-ness".
>>      * Please keep this list in case-insensitive alphabetical order.
>>      */
>>     typedef struct IRQState *qemu_irq;
>>
>>     /*
>>      * Function types
>>      */
>>     typedef void SaveStateHandler(QEMUFile *f, void *opaque);
>>     typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);
>>     typedef void (*qemu_irq_handler)(void *opaque, int n, int level);
>>
>> What do you think?
>
> A definite improvement on what is currently there ;-)

Amending my commit.  Thanks!
diff mbox series

Patch

diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h
index fcdaae58c4..29346648d4 100644
--- a/include/qemu/typedefs.h
+++ b/include/qemu/typedefs.h
@@ -1,10 +1,10 @@ 
 #ifndef QEMU_TYPEDEFS_H
 #define QEMU_TYPEDEFS_H
 
-/* A load of opaque types so that device init declarations don't have to
-   pull in all the real definitions.  */
-
-/* Please keep this list in case-insensitive alphabetical order */
+/*
+ * Incomplete struct types
+ * Please keep this list in case-insensitive alphabetical order.
+ */
 typedef struct AdapterInfo AdapterInfo;
 typedef struct AddressSpace AddressSpace;
 typedef struct AioContext AioContext;
@@ -101,6 +101,10 @@  typedef struct SHPCDevice SHPCDevice;
 typedef struct SSIBus SSIBus;
 typedef struct VirtIODevice VirtIODevice;
 typedef struct Visitor Visitor;
+
+/*
+ * Function types
+ */
 typedef void SaveStateHandler(QEMUFile *f, void *opaque);
 typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);