[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 3/3] docs/doxygen: doxygen documentation for grant_table.h


  • To: Julien Grall <julien@xxxxxxx>
  • From: Luca Fancellu <luca.fancellu@xxxxxxx>
  • Date: Thu, 8 Apr 2021 12:58:41 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AV9XS5vGKjTneBedwAChbjN4gwvzrEfyz7p23sivjiY=; b=oJ7BhiHgb79AklKP7EhSxwR1XU3X54jRunsiSguGWy0mTVjttGW5dvEOwU/HjsDHRR4Kw6/KXfIEQmwzF6EqnWnaeOv7BvzPq0PgCOKbYa4t/Ie0RrXVZJE6hSIUSpAS3K/w5h+/EX3aOZ+bv4z070svLAcNhvOJpAr6IcLj7poebrbp22jbmAOZbya88GcxVZ15SNknt9LOOMCBM1CRKMFYL1wu+DNaQkTjHKLT4c8M7YqUElIBG10R5LIhRYgAP4R67qaM2zcoyhq7Qi4g9DR4DwYQRZilb3e/MWbQhIYHheEpNsbh28BgZKB7Ihffp+dsFARvR7N9drpg2wIvLw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EcngLtb82++RIYCY/qQ/6vWW5z68tsl69RoB3ZAC6mDhBbiu7KpM00URM/35N3d6iOxbfVzkRVp+H7OcTA/3aPNL/dKX1Z/PRDH5KGvnEDg8WUuHzVLkSWXbfaLfgY2a7C51KqD9JjnItFd/8uOq28+aSLso7mGN8Xhd2bU1RhsXuaFjiObJfolAIGcL5IzoyBXd7KTi8wn3OdLldbxut/4OA3zd6F4gxOJgVey+Ro2r9d66U8h/7kVuSc1+SkvDPdKnEg/w2E+pvq2n7QCwNUSuC/c09/3ruEqmUeoYKVnMWSPjb9bjpK64kwOpbmzci36KAj+wQIH20o8YBBmOBg==
  • Authentication-results-original: xen.org; dkim=none (message not signed) header.d=none;xen.org; dmarc=none action=none header.from=arm.com;
  • Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, wei.chen@xxxxxxx, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>, Ian Jackson <iwj@xxxxxxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx
  • Delivery-date: Thu, 08 Apr 2021 11:59:11 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Nodisclaimer: true
  • Original-authentication-results: xen.org; dkim=none (message not signed) header.d=none;xen.org; dmarc=none action=none header.from=arm.com;


> On 8 Apr 2021, at 12:40, Julien Grall <julien@xxxxxxx> wrote:
> 
> Hi Luca,
> 
> On 08/04/2021 12:02, Luca Fancellu wrote:
>>> On 7 Apr 2021, at 22:26, Stefano Stabellini <sstabellini@xxxxxxxxxx> wrote:
>>> 
>>> On Wed, 7 Apr 2021, Jan Beulich wrote:
>>>> On 07.04.2021 10:42, Luca Fancellu wrote:
>>>>> Just to be sure that we are in the same page, are you suggesting to 
>>>>> modify the name
>>>>> In this way?
>>>>> 
>>>>> struct gnttab_cache_flush {
>>>>> -    union {
>>>>> +    union xen_gnttab_cache_flush_a {
>>>>>        uint64_t dev_bus_addr;
>>>>>        grant_ref_t ref;
>>>>>    } a;
>>>>> 
>>>>> Following this kind of pattern: xen_<upper struct name>_<member name> ?
>>>> 
>>>> While in general I would be fine with this scheme, for field names like
>>>> "a" or "u" it doesn't fit well imo.
>>> 
>>> "a" is a bad name anyway, even for the member. We can take the
>>> opportunity to find a better name. Almost anything would be better than
>>> "a". Maybe "refaddr"?
>>> 
>>> 
>>>> I'm also unconvinced this would be
>>>> scalable to the case where there's further struct/union nesting.
>>> 
>>> How many of these instances of multilevel nesting do we have? Luca might
>>> know. Probably not many? They could be special-cased.
>> There are not many multilevel nesting instances of anonymous struct/union 
>> and the maximum level of nesting I found in the public headers is 2:
>> union {
>>      union/struct {
>>              …
>>      } <name>
>> } <name>
>> I also see that in the majority of cases the unions have not meaningful 
>> names like “a” or “u” as member name, instead struct names are fine,
>> It could be fine to keep the meaningful name the same for the struct type 
>> name and use the pattern for the non-meaningful ones as long
>> as the names doesn’t create compilation errors?
>> Example:
>> struct upper_level {
>>      union {
>>              struct {
>>              
>>              } meaningful_name1;
>>              struct {
>>              
>>              } meaningful_name2;
>>      } u;
>> };
>> becomes:
>> struct upper_level {
>>      union upper_level_u {
>>              struct meaningful_name1 {
>>              
>>              } meaningful_name1;
>>              struct meaningful_name2 {
>>              
>>              } meaningful_name2;
>>      } u;
>> };
> 
> If I understand correctly your proposal, the name of the structure would be 
> the name of the field. The name of the fields are usually pretty generic so 
> you will likely end up to redefine the structure name.
> 
> Unless we want to provide random name, the only safe naming would be to 
> define the structure as upper_level_u_meaningful_name{1, 2}. But, this is 
> going to be pretty awful to read.
> 
> But I am still a bit puzzled by the fact doxygen is not capable to deal with 
> anynomous/unamed union. How do other projects deal with them?
> 
>> Doing this will help a lot the documentation side because the html page will 
>> show the "struct upper_level" with inside the “union upper_level_u" and 
>> inside again
>> the two struct “meaningful_name1" and “meaningful_name2", and from the point 
>> of view of the developer it can tell her/him exactly the name of the member 
>> to
>> access when writing code (apart from the upper_level_u that can be accessed 
>> by u, but we can’t clearly change it).
> 
> I don't quite understand the last point. Wouldn't the developper see the 
> field name? So how is it going to be different from seeing the structure name?

The developer, that is using the documentation generated with sphinx+doxygen, 
will see the structure name and not the field name because this is the way
sphinx+doxygen is rendering the code structures. You can see it in the 
generated documentation using this serie.

> 
>> If this sounds difficult to understand when reading, please generate the 
>> documentation and have a look on the page in one side and the source code in 
>> another.
> 
> Just to be clear, do you mean understanding what you wrote or a developper 
> trying to understand the code?

I meant understanding what I wrote, because I know it’s difficult to describe 
the concept without visualising the html page, it would have been much easier 
to attach
an image to clarify.

> 
> Cheers,
> 
> -- 
> Julien Grall




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.