Commit 4f1136a5 authored by Thomas Weißschuh's avatar Thomas Weißschuh Committed by Joel Granados
Browse files

scripts: check-sysctl-docs: handle per-namespace sysctls



Some sysctl tables are registered for each namespace.
(Like in ipc/ipc_sysctl.c)
These need special handling to track the variable assignments.

Signed-off-by: default avatarThomas Weißschuh <linux@weissschuh.net>
Reviewed-by: default avatarJoel Granados <j.granados@samsung.com>
Signed-off-by: default avatarJoel Granados <j.granados@samsung.com>
parent 8e882910
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -93,6 +93,7 @@ BEGINFILE {
    delete entries
    curtable = ""
    curentry = ""
    delete vars
    if (debug) print "Processing file " FILENAME
}

@@ -105,6 +106,7 @@ BEGINFILE {
/^};$/ {
    curtable = ""
    curentry = ""
    delete vars
}

curtable && /\.procname[\t ]*=[\t ]*".+"/ {
@@ -125,6 +127,24 @@ curtable && /\.procname[\t ]*=[\t ]*".+"/ {
    }
}

/kmemdup.*/ {
    match($0, /([^ \t]+) *= *kmemdup\(([^,]+) *,/, names)
    if (debug) print "Found variable " names[1] " for table " names[2]
    if (names[2] in entries) {
        vars[names[1]] = names[2]
    }
}

/__register_sysctl_table.*/ {
    match($0, /__register_sysctl_table\([^,]+, *"([^"]+)" *, *([^,]+)/, tables)
    if (debug) print "Registering variable table " tables[2] " at " tables[1]
    if (tables[1] == table && tables[2] in vars) {
        for (entry in entries[vars[tables[2]]]) {
            printentry(entry)
        }
    }
}

END {
    for (entry in documented) {
	if (!seen[entry]) {