kernel-doc: Fix parsing of DECLARE_BITMAP in struct
authorConchúr Navid <conchur@web.de>
Sun, 8 Nov 2015 09:52:00 +0000 (10:52 +0100)
committerJonathan Corbet <corbet@lwn.net>
Fri, 20 Nov 2015 23:14:10 +0000 (16:14 -0700)
Some documented structures in the kernel use DECLARE_BITMAP to create
arrays of unsigned longs to store information using the bitmap functions.
These have to be replaced with a parsable version for kernel-doc.

For example a simple input like

    /**
     * struct something - some test
     * @members: active members
     */
    struct something {
     DECLARE_BITMAP(members, MAX_MEMBERS);
    };

resulted in parsing warnings like

    warning: No description found for parameter 'MAX_MEMBERS)'
    warning: Excess struct/union/enum/typedef member 'members' description in 'something'

Signed-off-by: Conchúr Navid <conchur@web.de>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
scripts/kernel-doc

index f5c2971244a39232256155b5d7a9cb3fb2042afb..9015b18d9f240ce9365ad9b5dd1926b9a722ace9 100755 (executable)
@@ -1816,6 +1816,8 @@ sub dump_struct($$) {
        $members =~ s/__attribute__\s*\(\([a-z,_\*\s\(\)]*\)\)//i;
        $members =~ s/__aligned\s*\([^;]*\)//gos;
        $members =~ s/\s*CRYPTO_MINALIGN_ATTR//gos;
+       # replace DECLARE_BITMAP
+       $members =~ s/DECLARE_BITMAP\s*\(([^,)]+), ([^,)]+)\)/unsigned long $1\[BITS_TO_LONGS($2)\]/gos;
 
        create_parameterlist($members, ';', $file);
        check_sections($file, $declaration_name, "struct", $sectcheck, $struct_actual, $nested);