#! /usr/bin/perl -w use strict; # # Extract parameter documentation from *.ko files. # Assumes that parameter description include the default # value in the format we use in our DEF_PARM() macro # @ARGV || die "Usage: $0 module.ko....\n"; my $modinfo = '/sbin/modinfo'; my @mod_params; foreach my $file (glob "@ARGV") { undef @mod_params; print "$file:\n"; open(F, "$modinfo '$file' |") || die; while() { chomp; next unless s/^parm:\s*//; my ($name, $description) = split(/:/, $_, 2); # Extract type $description =~ s/\s*\(([^)]+)\)$//; my $type = $1; # Extract default value $description =~ s/\s*\[default\s+([^]]+)\]$//; my $default = $1; push(@mod_params, { NAME => $name, TYPE => $type, DEFVAL => $default, DESC => $description, }); } # Print sorted list foreach my $p (sort { $a->{NAME} cmp $b->{NAME} } @mod_params) { printf "\t%-8s %-22s = %-20s %s\n", $p->{TYPE}, $p->{NAME}, $p->{DEFVAL}, $p->{DESC}; } close F || die; }