diff options
| author | Jani Nikula <jani.nikula@intel.com> | 2016-11-16 10:26:16 -0500 |
|---|---|---|
| committer | Jonathan Corbet <corbet@lwn.net> | 2016-11-16 18:30:27 -0500 |
| commit | 0c9aa209579d41c9b8bf1fc39ce042bea2ec422d (patch) | |
| tree | b6814f726e98072f37c9d1a40a8128f4d21171ab /scripts/kernel-doc | |
| parent | dc92726e7f8d9e400ae4fa42fde4c3a5020fcbb8 (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-x | scripts/kernel-doc | 12 |
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*(.*)?'; | |||
| 421 | my $doc_inline_start = '^\s*/\*\*\s*$'; | 421 | my $doc_inline_start = '^\s*/\*\*\s*$'; |
| 422 | my $doc_inline_sect = '\s*\*\s*(@[\w\s]+):(.*)'; | 422 | my $doc_inline_sect = '\s*\*\s*(@[\w\s]+):(.*)'; |
| 423 | my $doc_inline_end = '^\s*\*/\s*$'; | 423 | my $doc_inline_end = '^\s*\*/\s*$'; |
| 424 | my $doc_inline_oneline = '^\s*/\*\*\s*(@[\w\s]+):\s*(.*)\s*\*/\s*$'; | ||
| 424 | my $export_symbol = '^\s*EXPORT_SYMBOL(_GPL)?\s*\(\s*(\w+)\s*\)\s*;'; | 425 | my $export_symbol = '^\s*EXPORT_SYMBOL(_GPL)?\s*\(\s*(\w+)\s*\)\s*;'; |
| 425 | 426 | ||
| 426 | my %parameterdescs; | 427 | my %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') { |
