7 use vars qw($Pat @Locks $DupOnly);
9 # This pattern matches the function names we are looking for
10 $Pat = qr/(?:NB)?Obtain(?:Write|Shared|)Lock|UpgradeSToWLock/;
12 if (@ARGV[0] eq '-d') {
21 my $path = $File::Find::name;
22 my $F = new IO::File($_, O_RDONLY) or die "$path: $!\n";
24 next unless /\b(?:$Pat)\(.*,\s*(\d+)\)/o;
26 push(@{$Locks[$1]}, sprintf("%s:%d", $path, $.));
31 foreach my $id (0 .. @Locks) {
32 next unless defined $Locks[$id];
33 next if $DupOnly && @{$Locks[$id]} < 2;
34 printf("%5d %s", $id, join(" ", map("$_\n", @{$Locks[$id]})))