[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: Wed, 7 Apr 2021 15:51:18 +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=YxJ3/3H323IN78fGMtreQjjLaorKQOz/SQ5b5vIuZ4s=; b=ZsiX2rJP5hnAgCXiIKiwHB4KTQiAfwEYaqT8KipWnpHrx+D7/C6Eow5v7gj7AifOMasaiKXrQN/ROlC/ClQBklAmGtsyLtoKA35wrL1pExqUVm0j41VXJ1lSJTSZJw5HdUYHGxfZNRd1+0mLxNxqM+E3jhMOS9soM/mqmmYdnDO1SxU080k3tdO2sBhDRj0mrop3cY+CoUwQ6O5I5fepqI84HYon4D6VRzq3VJyzoAAiUYnFfGU0GZWCZZWaDlCo+erSHXJ6AdKDNaZwVsA14/MQSXtUEeTIPusWe/0fjtzGHnbbU8rIXum/iLtORMi4W12NdEeUs3UXae0CQm1Gew==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EFEPe8qmr5rWFEObIavs7X8vSrzNeTRByLiRTny3d8uqiF8hzujG55Tmj0J5fCV6XdoFGp2Bcw63ZyvewDVhh9qcHGHxB3wm9qEhk4x8z3QBIb9yetT+uLhPRv8dRI7A1n4/FPgpbw7yfAZegQr71/GhMaW4t5gIho1iqQT3Wx1J34GyFebHhsWqJhr2Vr4Vg1sSyE1idHt7OWcZmPzmj0d3v4MJzVoVta6wU5LtOvlJ02khATmyvmfXHw+HhsWOozH6Gu1phmV4I+iwVQkqM/rJnro7e8FproXZFPlgzrguotSeAWqcYgLV2kC3+ho+/Fn1o44YlxZgLLAEsjoZzg==
  • Authentication-results-original: xen.org; dkim=none (message not signed) header.d=none;xen.org; dmarc=none action=none header.from=arm.com;
  • Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx, Bertrand Marquis <bertrand.marquis@xxxxxxx>, wei.chen@xxxxxxx, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>, Ian Jackson <iwj@xxxxxxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>
  • Delivery-date: Wed, 07 Apr 2021 14:51:54 +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 7 Apr 2021, at 14:56, Julien Grall <julien@xxxxxxx> wrote:
> 
> Hi Luca,
> 
> On 07/04/2021 14:19, Luca Fancellu wrote:
>>> On 7 Apr 2021, at 14:13, Julien Grall <julien@xxxxxxx> wrote:
>>> 
>>> Hi,
>>> 
>>> On 06/04/2021 11:36, Luca Fancellu wrote:
>>>> Modification to include/public/grant_table.h:
>>>> 1) Change anonymous structure to be named structure,
>>>>    because doxygen can't deal with them.
>>> 
>>> What do you mean by can't deal with them? I had a quick try with doxygen 
>>> build and couldn't find any failure (although I haven't looked at the 
>>> output).
>>> 
>> Hi Julien,
>> The problem is that Doxygen can’t generate proper documentation for 
>> anonymous union/structure, it ends up with warning and/or producing wrong 
>> documentation like
>> changing names or giving field description to the wrong field.
> 
> I might do something wrong because I cannot spot any significant difference 
> in the doxygen ouput if I switch back to anonymous union. Would you mind to 
> post more details (such as a diff) on how doxygen doesn't generate properly 
> documentation?
> 

Hi Julien,

Here the explanation of the problem: 
https://vovkos.github.io/doxyrest/manual/unnamed-structs.html

Clearly the proposed solution is not suitable because they are just hiding the 
anonymous union/struct field from the documentation.

I did two test:

1) with the anonymous structure:

struct gnttab_cache_flush {
   union {
       uint64_t dev_bus_addr;
       grant_ref_t ref;
   } a;

I get a warning from sphinx (because the XML output of Doxygen is not in a good 
shape) when I generate the documentation, here follow the output:

$ make -C docs XEN_TARGET_ARCH="arm64" sphinx-html
make: Entering directory '/home/user/prj_xen/xen/docs'
Generating xen.doxyfile
mv xen.doxyfile.tmp xen.doxyfile
Generating doxygen_input.h
/usr/bin/doxygen xen.doxyfile
Generating hypercall-interfaces/index.rst
XEN_ROOT=/home/user/prj_xen/xen /usr/bin/sphinx-build -b html . sphinx/html
Running Sphinx v1.6.7
making output directory...
loading pickled environment... not yet created
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 21 source files that are out of date
updating environment: 21 added, 0 changed, 0 removed
reading sources... [100%] misc/xen-makefiles/makefiles
/home/user/prj_xen/xen/docs/hypercall-interfaces/arm64/grant_tables.rst:6: 
WARNING: Invalid definition: Expected end of definition. [error at 18]
  gnttab_cache_flush.a
  ------------------^
looking for now-outdated files... none found
pickling environment... done
checking consistency... 
/home/user/prj_xen/xen/docs/hypercall-interfaces/arm32.rst: WARNING: document 
isn't included in any toctree
/home/user/prj_xen/xen/docs/hypercall-interfaces/x86_64.rst: WARNING: document 
isn't included in any toctree
/home/user/prj_xen/xen/docs/misc/kconfig.rst: WARNING: document isn't included 
in any toctree
/home/user/prj_xen/xen/docs/misc/kconfig-language.rst: WARNING: document isn't 
included in any toctree
/home/user/prj_xen/xen/docs/misc/kconfig-macro-language.rst: WARNING: document 
isn't included in any toctree
/home/user/prj_xen/xen/docs/misc/xen-makefiles/makefiles.rst: WARNING: document 
isn't included in any toctree
done
preparing documents... done
writing output... [100%] misc/xen-makefiles/makefiles
generating indices... genindex
writing additional pages... search
copying images... [100%] admin-guide/xen-overview.drawio.svg
copying static files... done
copying extra files... done
dumping search index in English (code: en) ... done
dumping object inventory... done
build succeeded, 7 warnings.
make: Leaving directory '/home/user/prj_xen/xen/docs’

And checking the generated html page 
html/hypercall-interfaces/arm64/grant_tables.html you can see that there is a 
union without name or fields right above "union 
__guest_handle_gnttab_cache_flush_t".

2) without the anonymous structure:

struct gnttab_cache_flush {
-    union {
+    union a {
       uint64_t dev_bus_addr;
       grant_ref_t ref;
   } a;

I don’t get the warning from sphinx and looking in the 
html/hypercall-interfaces/arm64/grant_tables.html page I can see the proper 
documentation for the union a right above "union 
__guest_handle_gnttab_cache_flush_t”.

Let me know if you get different results.

Cheers,
Luca

> Cheers,
> 
> -- 
> Julien Grall




 


Rackspace

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