aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/kernel-doc
diff options
context:
space:
mode:
authorJani Nikula <jani.nikula@intel.com>2016-11-16 10:26:16 -0500
committerJonathan Corbet <corbet@lwn.net>2016-11-16 18:30:27 -0500
commit0c9aa209579d41c9b8bf1fc39ce042bea2ec422d (patch)
treeb6814f726e98072f37c9d1a40a8128f4d21171ab /scripts/kernel-doc
parentdc92726e7f8d9e400ae4fa42fde4c3a5020fcbb8 (diff)
kernel-doc: add support for one line inline struct member doc comments
kernel-doc supports documenting struct members "inline" since a4c6ebede2f9 ("scripts/kernel-doc Allow struct arguments documentation in struct body"). This requires the inline kernel-doc comments to have the opening and closing comment markers (/** and */ respectively) on lines of their own, even for short comments. For example: /** * struct foo - struct documentation */ struct foo { /** * @bar: member documentation */ int bar; }; Add support for one line inline comments: /** * struct foo - struct documentation */ struct foo { /** @bar: member documentation */ int bar; }; Note that mixing of the two in one doc comment is not allowed; either both comment markers must be on lines of their own, or both must be on the one line. This limitation keeps both the comments more uniform, and kernel-doc less complicated. Cc: Daniel Vetter <daniel@ffwll.ch> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Diffstat (limited to 'scripts/kernel-doc')
-rwxr-xr-xscripts/kernel-doc12
1 files changed, 11 insertions, 1 deletions
diff --git a/scripts/kernel-doc b/scripts/kernel-doc
index e10378f769f9..030fc633acd4 100755
--- a/scripts/kernel-doc
+++ b/scripts/kernel-doc
@@ -421,6 +421,7 @@ my $doc_block = $doc_com . 'DOC:\s*(.*)?';
421my $doc_inline_start = '^\s*/\*\*\s*$'; 421my $doc_inline_start = '^\s*/\*\*\s*$';
422my $doc_inline_sect = '\s*\*\s*(@[\w\s]+):(.*)'; 422my $doc_inline_sect = '\s*\*\s*(@[\w\s]+):(.*)';
423my $doc_inline_end = '^\s*\*/\s*$'; 423my $doc_inline_end = '^\s*\*/\s*$';
424my $doc_inline_oneline = '^\s*/\*\*\s*(@[\w\s]+):\s*(.*)\s*\*/\s*$';
424my $export_symbol = '^\s*EXPORT_SYMBOL(_GPL)?\s*\(\s*(\w+)\s*\)\s*;'; 425my $export_symbol = '^\s*EXPORT_SYMBOL(_GPL)?\s*\(\s*(\w+)\s*\)\s*;';
425 426
426my %parameterdescs; 427my %parameterdescs;
@@ -3024,7 +3025,16 @@ sub process_file($) {
3024 } 3025 }
3025 } 3026 }
3026 } elsif ($state == STATE_PROTO) { # scanning for function '{' (end of prototype) 3027 } elsif ($state == STATE_PROTO) { # scanning for function '{' (end of prototype)
3027 if (/$doc_inline_start/) { 3028 if (/$doc_inline_oneline/) {
3029 $section = $1;
3030 $contents = $2;
3031 if ($contents ne "") {
3032 $contents .= "\n";
3033 dump_section($file, $section, xml_escape($contents));
3034 $section = $section_default;
3035 $contents = "";
3036 }
3037 } elsif (/$doc_inline_start/) {
3028 $state = STATE_INLINE; 3038 $state = STATE_INLINE;
3029 $inline_doc_state = STATE_INLINE_NAME; 3039 $inline_doc_state = STATE_INLINE_NAME;
3030 } elsif ($decl_type eq 'function') { 3040 } elsif ($decl_type eq 'function') {