| #
7538df7a |
| 17-Mar-2026 |
Mauro Carvalho Chehab <mchehab+huawei@kernel.org> |
docs: xforms_lists: use CMatch for all identifiers
CMatch is lexically correct and replaces only identifiers, which is exactly where macro transformations happen.
Use it to make the output safer an
docs: xforms_lists: use CMatch for all identifiers
CMatch is lexically correct and replaces only identifiers, which is exactly where macro transformations happen.
Use it to make the output safer and ensure that all arguments will be parsed the right way, even on complex cases.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Signed-off-by: Jonathan Corbet <corbet@lwn.net> Message-ID: <86d4a07ff0e054207747fabf38d6bb261b52b5fa.1773770483.git.mchehab+huawei@kernel.org>
show more ...
|
| #
79d881be |
| 17-Mar-2026 |
Mauro Carvalho Chehab <mchehab+huawei@kernel.org> |
docs: kdoc_parser: avoid tokenizing structs everytime
Most of the rules inside CTransforms are of the type CMatch.
Don't re-parse the source code every time.
Doing this doesn't change the output,
docs: kdoc_parser: avoid tokenizing structs everytime
Most of the rules inside CTransforms are of the type CMatch.
Don't re-parse the source code every time.
Doing this doesn't change the output, but makes kdoc almost as fast as before the tokenizer patches:
# Before tokenizer patches $ time ./scripts/kernel-doc . -man >original 2>&1
real 0m42.933s user 0m36.523s sys 0m1.145s
# After tokenizer patches $ time ./scripts/kernel-doc . -man >before 2>&1
real 1m29.853s user 1m23.974s sys 0m1.237s
# After this patch $ time ./scripts/kernel-doc . -man >after 2>&1
real 0m48.579s user 0m45.938s sys 0m0.988s
$ diff -s before after Files before and after are identical
Manually checked the differences between original and after with:
$ diff -U0 -prBw original after|grep -v Warning|grep -v "@@"|less
They're due: - whitespace fixes; - struct_group are now better handled; - several badly-generated man pages from broken inline kernel-doc markups are now fixed.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Signed-off-by: Jonathan Corbet <corbet@lwn.net> Message-ID: <1cc2a4286ebf7d4b2d03fcaf42a1ba9fa09004b9.1773770483.git.mchehab+huawei@kernel.org>
show more ...
|
| #
2f07ddbd |
| 17-Mar-2026 |
Mauro Carvalho Chehab <mchehab+huawei@kernel.org> |
docs: xforms_lists: better evaluate struct_group macros
The previous approach were to unwind nested structs/unions.
Now that we have a logic that can handle it well, use it to ensure that struct_gr
docs: xforms_lists: better evaluate struct_group macros
The previous approach were to unwind nested structs/unions.
Now that we have a logic that can handle it well, use it to ensure that struct_group macros will properly reflect the actual struct.
Note that the replacemend logic still simplifies the code a little bit, as the basic build block for struct group is:
union { \ struct { MEMBERS } ATTRS; \ struct __struct_group_tag(TAG) { MEMBERS } ATTRS NAME; \ } ATTRS
There:
- ATTRS is meant to add extra macro attributes like __packed which we already discard, as they aren't relevant to document struct members;
- TAG is used only when built with __cplusplus.
So, instead, convert them into just:
struct { MEMBERS };
Please notice that here, we're using the greedy version of the backrefs, as MEMBERS is actually MEMBERS... on all such macros.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> Signed-off-by: Jonathan Corbet <corbet@lwn.net> Message-ID: <24bf2c036b08814d9b4aabc27542fd3b2ff54424.1773770483.git.mchehab+huawei@kernel.org>
show more ...
|
| #
f63e6163 |
| 17-Mar-2026 |
Mauro Carvalho Chehab <mchehab+huawei@kernel.org> |
docs: xforms_lists: handle struct_group directly
The previous logic was handling struct_group on two steps. Remove the previous approach, as CMatch can do it the right way on a single step.
Signed-
docs: xforms_lists: handle struct_group directly
The previous logic was handling struct_group on two steps. Remove the previous approach, as CMatch can do it the right way on a single step.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Signed-off-by: Jonathan Corbet <corbet@lwn.net> Message-ID: <da7f879d90e3ffbc1f47771522f212a60df1fab6.1773770483.git.mchehab+huawei@kernel.org>
show more ...
|
| #
600079fd |
| 17-Mar-2026 |
Mauro Carvalho Chehab <mchehab+huawei@kernel.org> |
docs: kdoc: replace NestedMatch with CMatch
Our previous approach to solve nested structs were to use NestedMatch. It works well, but adding support to parse delimiters is very complex.
Instead, us
docs: kdoc: replace NestedMatch with CMatch
Our previous approach to solve nested structs were to use NestedMatch. It works well, but adding support to parse delimiters is very complex.
Instead, use CMatch, which uses a C tokenizer, making the code more reliable and simpler.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Signed-off-by: Jonathan Corbet <corbet@lwn.net> Message-ID: <900bff66f8093402999f9fe055fbfa3fa33a8d8b.1773770483.git.mchehab+huawei@kernel.org>
show more ...
|
| #
85c2a513 |
| 02-Mar-2026 |
Mauro Carvalho Chehab <mchehab+huawei@kernel.org> |
docs: kdoc_parser: move nested match transforms to xforms_lists.py
As NestedMatch now has a sub method and a declaration close to what KernRe does, we can move the rules to xforms_lists and simplify
docs: kdoc_parser: move nested match transforms to xforms_lists.py
As NestedMatch now has a sub method and a declaration close to what KernRe does, we can move the rules to xforms_lists and simplify kdoc_parser a little bit.
No functional changes.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Signed-off-by: Jonathan Corbet <corbet@lwn.net> Message-ID: <762ce2a58ff024c1b0b6f6a6e05020d1415b8308.1772469446.git.mchehab+huawei@kernel.org>
show more ...
|
| #
4ff59bdd |
| 02-Mar-2026 |
Randy Dunlap <rdunlap@infradead.org> |
docs: xforms_lists: ignore context analysis and lock attributes
Drop context analysis and lock (tracking) attributes to avoid kernel-doc warnings.
There are now lots of warnings like these:
Do
docs: xforms_lists: ignore context analysis and lock attributes
Drop context analysis and lock (tracking) attributes to avoid kernel-doc warnings.
There are now lots of warnings like these:
Documentation/core-api/kref:328: ../include/linux/kref.h:72: WARNING: Invalid C declaration: Expected end of definition. [error at 96] int kref_put_mutex (struct kref *kref, void (*release)(struct kref *kref), struct mutex *mutex) __cond_acquires(true# mutex) ------------------------------------------------------------------------------------------------^ Documentation/core-api/kref:328: ../include/linux/kref.h:94: WARNING: Invalid C declaration: Expected end of definition. [error at 92] int kref_put_lock (struct kref *kref, void (*release)(struct kref *kref), spinlock_t *lock) __cond_acquires(true# lock) --------------------------------------------------------------------------------------------^
The regex is suggested by Mauro; mine was too greedy. Thanks. Updated context analysis and lock macros list provided by PeterZ. Thanks.
[mchehab: modified to be applied after xforms_lists split]
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> Closes: https://lore.kernel.org/all/20260107161548.45530e1c@canb.auug.org.au/ Signed-off-by: Randy Dunlap <rdunlap@infradead.org> Reviewed-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Signed-off-by: Jonathan Corbet <corbet@lwn.net> Message-ID: <3c7fdfc364a8920f92530b47bdbf4bb29a40371f.1772469446.git.mchehab+huawei@kernel.org>
show more ...
|
| #
d842057c |
| 02-Mar-2026 |
Mauro Carvalho Chehab <mchehab+huawei@kernel.org> |
docs: kdoc_parser: move transform lists to a separate file
Over the time, most of the changes at kernel-doc are related to maintaining a list of transforms to convert macros into pure C code.
Place
docs: kdoc_parser: move transform lists to a separate file
Over the time, most of the changes at kernel-doc are related to maintaining a list of transforms to convert macros into pure C code.
Place such transforms on a separate module, to cleanup the parser module.
There is an advantage on that: QEMU also uses our own kernel-doc, but the xforms list there is different. By placing it on a separate module, we can minimize the differences and make it easier to keep QEMU in sync with Kernel upstream.
No functional changes.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> Signed-off-by: Jonathan Corbet <corbet@lwn.net> Message-ID: <ccd74b7589e1fff340a74bf8ed16a974532cb54f.1772469446.git.mchehab+huawei@kernel.org>
show more ...
|