> On 7 Apr 2021, at 14:56, Julien Grall <jul...@xen.org> wrote:
>
> Hi Luca,
>
> On 07/04/2021 14:19, Luca Fancellu wrote:
>>> On 7 Apr 2021, at 14:13, Julien Grall <jul...@xen.org> 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