Merge commit 'v2.6.32-rc6' into perf/core
Conflicts: tools/perf/Makefile Merge reason: Resolve the conflict, merge to upstream and merge in perf fixes so we can add a dependent patch. Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
@ -2,7 +2,7 @@
|
||||
# (c) 2001, Dave Jones. <davej@redhat.com> (the file handling bit)
|
||||
# (c) 2005, Joel Schopp <jschopp@austin.ibm.com> (the ugly bit)
|
||||
# (c) 2007,2008, Andy Whitcroft <apw@uk.ibm.com> (new conditions, test suite)
|
||||
# (c) 2008, Andy Whitcroft <apw@canonical.com>
|
||||
# (c) 2008,2009, Andy Whitcroft <apw@canonical.com>
|
||||
# Licensed under the terms of the GNU GPL License version 2
|
||||
|
||||
use strict;
|
||||
@ -10,7 +10,7 @@ use strict;
|
||||
my $P = $0;
|
||||
$P =~ s@.*/@@g;
|
||||
|
||||
my $V = '0.29';
|
||||
my $V = '0.30';
|
||||
|
||||
use Getopt::Long qw(:config no_auto_abbrev);
|
||||
|
||||
@ -130,7 +130,10 @@ if ($tree) {
|
||||
|
||||
my $emitted_corrupt = 0;
|
||||
|
||||
our $Ident = qr{[A-Za-z_][A-Za-z\d_]*};
|
||||
our $Ident = qr{
|
||||
[A-Za-z_][A-Za-z\d_]*
|
||||
(?:\s*\#\#\s*[A-Za-z_][A-Za-z\d_]*)*
|
||||
}x;
|
||||
our $Storage = qr{extern|static|asmlinkage};
|
||||
our $Sparse = qr{
|
||||
__user|
|
||||
@ -997,23 +1000,25 @@ sub annotate_values {
|
||||
|
||||
sub possible {
|
||||
my ($possible, $line) = @_;
|
||||
|
||||
print "CHECK<$possible> ($line)\n" if ($dbg_possible > 2);
|
||||
if ($possible !~ /(?:
|
||||
my $notPermitted = qr{(?:
|
||||
^(?:
|
||||
$Modifier|
|
||||
$Storage|
|
||||
$Type|
|
||||
DEFINE_\S+|
|
||||
DEFINE_\S+
|
||||
)$|
|
||||
^(?:
|
||||
goto|
|
||||
return|
|
||||
case|
|
||||
else|
|
||||
asm|__asm__|
|
||||
do
|
||||
)$|
|
||||
)(?:\s|$)|
|
||||
^(?:typedef|struct|enum)\b
|
||||
)/x) {
|
||||
)}x;
|
||||
warn "CHECK<$possible> ($line)\n" if ($dbg_possible > 2);
|
||||
if ($possible !~ $notPermitted) {
|
||||
# Check for modifiers.
|
||||
$possible =~ s/\s*$Storage\s*//g;
|
||||
$possible =~ s/\s*$Sparse\s*//g;
|
||||
@ -1022,8 +1027,10 @@ sub possible {
|
||||
} elsif ($possible =~ /\s/) {
|
||||
$possible =~ s/\s*$Type\s*//g;
|
||||
for my $modifier (split(' ', $possible)) {
|
||||
warn "MODIFIER: $modifier ($possible) ($line)\n" if ($dbg_possible);
|
||||
push(@modifierList, $modifier);
|
||||
if ($modifier !~ $notPermitted) {
|
||||
warn "MODIFIER: $modifier ($possible) ($line)\n" if ($dbg_possible);
|
||||
push(@modifierList, $modifier);
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
@ -1138,6 +1145,7 @@ sub process {
|
||||
# suppression flags
|
||||
my %suppress_ifbraces;
|
||||
my %suppress_whiletrailers;
|
||||
my %suppress_export;
|
||||
|
||||
# Pre-scan the patch sanitizing the lines.
|
||||
# Pre-scan the patch looking for any __setup documentation.
|
||||
@ -1230,7 +1238,6 @@ sub process {
|
||||
$linenr++;
|
||||
|
||||
my $rawline = $rawlines[$linenr - 1];
|
||||
my $hunk_line = ($realcnt != 0);
|
||||
|
||||
#extract the line range in the file after the patch is applied
|
||||
if ($line=~/^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@/) {
|
||||
@ -1247,6 +1254,7 @@ sub process {
|
||||
|
||||
%suppress_ifbraces = ();
|
||||
%suppress_whiletrailers = ();
|
||||
%suppress_export = ();
|
||||
next;
|
||||
|
||||
# track the line number as we move through the hunk, note that
|
||||
@ -1270,6 +1278,8 @@ sub process {
|
||||
$realcnt--;
|
||||
}
|
||||
|
||||
my $hunk_line = ($realcnt != 0);
|
||||
|
||||
#make up the handle for any error we report on this line
|
||||
$prefix = "$filename:$realline: " if ($emacs && $file);
|
||||
$prefix = "$filename:$linenr: " if ($emacs && !$file);
|
||||
@ -1420,13 +1430,22 @@ sub process {
|
||||
}
|
||||
|
||||
# Check for potential 'bare' types
|
||||
my ($stat, $cond, $line_nr_next, $remain_next, $off_next);
|
||||
my ($stat, $cond, $line_nr_next, $remain_next, $off_next,
|
||||
$realline_next);
|
||||
if ($realcnt && $line =~ /.\s*\S/) {
|
||||
($stat, $cond, $line_nr_next, $remain_next, $off_next) =
|
||||
ctx_statement_block($linenr, $realcnt, 0);
|
||||
$stat =~ s/\n./\n /g;
|
||||
$cond =~ s/\n./\n /g;
|
||||
|
||||
# Find the real next line.
|
||||
$realline_next = $line_nr_next;
|
||||
if (defined $realline_next &&
|
||||
(!defined $lines[$realline_next - 1] ||
|
||||
substr($lines[$realline_next - 1], $off_next) =~ /^\s*$/)) {
|
||||
$realline_next++;
|
||||
}
|
||||
|
||||
my $s = $stat;
|
||||
$s =~ s/{.*$//s;
|
||||
|
||||
@ -1661,8 +1680,8 @@ sub process {
|
||||
}
|
||||
|
||||
# check for initialisation to aggregates open brace on the next line
|
||||
if ($prevline =~ /$Declare\s*$Ident\s*=\s*$/ &&
|
||||
$line =~ /^.\s*{/) {
|
||||
if ($line =~ /^.\s*{/ &&
|
||||
$prevline =~ /(?:^|[^=])=\s*$/) {
|
||||
ERROR("that open brace { should be on the previous line\n" . $hereprev);
|
||||
}
|
||||
|
||||
@ -1687,21 +1706,40 @@ sub process {
|
||||
$line =~ s@//.*@@;
|
||||
$opline =~ s@//.*@@;
|
||||
|
||||
#EXPORT_SYMBOL should immediately follow its function closing }.
|
||||
if (($line =~ /EXPORT_SYMBOL.*\((.*)\)/) ||
|
||||
($line =~ /EXPORT_UNUSED_SYMBOL.*\((.*)\)/)) {
|
||||
# EXPORT_SYMBOL should immediately follow the thing it is exporting, consider
|
||||
# the whole statement.
|
||||
#print "APW <$lines[$realline_next - 1]>\n";
|
||||
if (defined $realline_next &&
|
||||
exists $lines[$realline_next - 1] &&
|
||||
!defined $suppress_export{$realline_next} &&
|
||||
($lines[$realline_next - 1] =~ /EXPORT_SYMBOL.*\((.*)\)/ ||
|
||||
$lines[$realline_next - 1] =~ /EXPORT_UNUSED_SYMBOL.*\((.*)\)/)) {
|
||||
my $name = $1;
|
||||
if ($prevline !~ /(?:
|
||||
^.}|
|
||||
if ($stat !~ /(?:
|
||||
\n.}\s*$|
|
||||
^.DEFINE_$Ident\(\Q$name\E\)|
|
||||
^.DECLARE_$Ident\(\Q$name\E\)|
|
||||
^.LIST_HEAD\(\Q$name\E\)|
|
||||
^.$Type\s*\(\s*\*\s*\Q$name\E\s*\)\s*\(|
|
||||
\b\Q$name\E(?:\s+$Attribute)?\s*(?:;|=|\[)
|
||||
^.(?:$Storage\s+)?$Type\s*\(\s*\*\s*\Q$name\E\s*\)\s*\(|
|
||||
\b\Q$name\E(?:\s+$Attribute)*\s*(?:;|=|\[|\()
|
||||
)/x) {
|
||||
WARN("EXPORT_SYMBOL(foo); should immediately follow its function/variable\n" . $herecurr);
|
||||
#print "FOO A<$lines[$realline_next - 1]> stat<$stat> name<$name>\n";
|
||||
$suppress_export{$realline_next} = 2;
|
||||
} else {
|
||||
$suppress_export{$realline_next} = 1;
|
||||
}
|
||||
}
|
||||
if (!defined $suppress_export{$linenr} &&
|
||||
$prevline =~ /^.\s*$/ &&
|
||||
($line =~ /EXPORT_SYMBOL.*\((.*)\)/ ||
|
||||
$line =~ /EXPORT_UNUSED_SYMBOL.*\((.*)\)/)) {
|
||||
#print "FOO B <$lines[$linenr - 1]>\n";
|
||||
$suppress_export{$linenr} = 2;
|
||||
}
|
||||
if (defined $suppress_export{$linenr} &&
|
||||
$suppress_export{$linenr} == 2) {
|
||||
WARN("EXPORT_SYMBOL(foo); should immediately follow its function/variable\n" . $herecurr);
|
||||
}
|
||||
|
||||
# check for external initialisers.
|
||||
if ($line =~ /^.$Type\s*$Ident\s*(?:\s+$Modifier)*\s*=\s*(0|NULL|false)\s*;/) {
|
||||
|
@ -13,7 +13,7 @@
|
||||
use strict;
|
||||
|
||||
my $P = $0;
|
||||
my $V = '0.20';
|
||||
my $V = '0.21';
|
||||
|
||||
use Getopt::Long qw(:config no_auto_abbrev);
|
||||
|
||||
@ -37,6 +37,7 @@ my $scm = 0;
|
||||
my $web = 0;
|
||||
my $subsystem = 0;
|
||||
my $status = 0;
|
||||
my $keywords = 1;
|
||||
my $from_filename = 0;
|
||||
my $pattern_depth = 0;
|
||||
my $version = 0;
|
||||
@ -84,6 +85,7 @@ if (!GetOptions(
|
||||
'scm!' => \$scm,
|
||||
'web!' => \$web,
|
||||
'pattern-depth=i' => \$pattern_depth,
|
||||
'k|keywords!' => \$keywords,
|
||||
'f|file' => \$from_filename,
|
||||
'v|version' => \$version,
|
||||
'h|help' => \$help,
|
||||
@ -132,6 +134,8 @@ if (!top_of_kernel_tree($lk_path)) {
|
||||
## Read MAINTAINERS for type/value pairs
|
||||
|
||||
my @typevalue = ();
|
||||
my %keyword_hash;
|
||||
|
||||
open(MAINT, "<${lk_path}MAINTAINERS") || die "$P: Can't open MAINTAINERS\n";
|
||||
while (<MAINT>) {
|
||||
my $line = $_;
|
||||
@ -149,6 +153,8 @@ while (<MAINT>) {
|
||||
if ((-d $value)) {
|
||||
$value =~ s@([^/])$@$1/@;
|
||||
}
|
||||
} elsif ($type eq "K") {
|
||||
$keyword_hash{@typevalue} = $value;
|
||||
}
|
||||
push(@typevalue, "$type:$value");
|
||||
} elsif (!/^(\s)*$/) {
|
||||
@ -188,6 +194,7 @@ if ($email_remove_duplicates) {
|
||||
|
||||
my @files = ();
|
||||
my @range = ();
|
||||
my @keyword_tvi = ();
|
||||
|
||||
foreach my $file (@ARGV) {
|
||||
##if $file is a directory and it lacks a trailing slash, add one
|
||||
@ -198,11 +205,24 @@ foreach my $file (@ARGV) {
|
||||
}
|
||||
if ($from_filename) {
|
||||
push(@files, $file);
|
||||
if (-f $file && $keywords) {
|
||||
open(FILE, "<$file") or die "$P: Can't open ${file}\n";
|
||||
while (<FILE>) {
|
||||
my $patch_line = $_;
|
||||
foreach my $line (keys %keyword_hash) {
|
||||
if ($patch_line =~ m/^.*$keyword_hash{$line}/x) {
|
||||
push(@keyword_tvi, $line);
|
||||
}
|
||||
}
|
||||
}
|
||||
close(FILE);
|
||||
}
|
||||
} else {
|
||||
my $file_cnt = @files;
|
||||
my $lastfile;
|
||||
open(PATCH, "<$file") or die "$P: Can't open ${file}\n";
|
||||
while (<PATCH>) {
|
||||
my $patch_line = $_;
|
||||
if (m/^\+\+\+\s+(\S+)/) {
|
||||
my $filename = $1;
|
||||
$filename =~ s@^[^/]*/@@;
|
||||
@ -213,6 +233,12 @@ foreach my $file (@ARGV) {
|
||||
if ($email_git_blame) {
|
||||
push(@range, "$lastfile:$1:$2");
|
||||
}
|
||||
} elsif ($keywords) {
|
||||
foreach my $line (keys %keyword_hash) {
|
||||
if ($patch_line =~ m/^[+-].*$keyword_hash{$line}/x) {
|
||||
push(@keyword_tvi, $line);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
close(PATCH);
|
||||
@ -286,6 +312,13 @@ foreach my $file (@files) {
|
||||
}
|
||||
}
|
||||
|
||||
if ($keywords) {
|
||||
@keyword_tvi = sort_and_uniq(@keyword_tvi);
|
||||
foreach my $line (@keyword_tvi) {
|
||||
add_categories($line);
|
||||
}
|
||||
}
|
||||
|
||||
if ($email) {
|
||||
foreach my $chief (@penguin_chief) {
|
||||
if ($chief =~ m/^(.*):(.*)/) {
|
||||
@ -384,6 +417,7 @@ Output type options:
|
||||
|
||||
Other options:
|
||||
--pattern-depth => Number of pattern directory traversals (default: 0 (all))
|
||||
--keywords => scan patch for keywords (default: 1 (on))
|
||||
--version => show version
|
||||
--help => show this help information
|
||||
|
||||
@ -486,7 +520,6 @@ sub format_email {
|
||||
}
|
||||
|
||||
sub find_starting_index {
|
||||
|
||||
my ($index) = @_;
|
||||
|
||||
while ($index > 0) {
|
||||
|
Reference in New Issue
Block a user