#!/usr/bin/perl -w # # headers_check.pl execute a number of trivial consistency checks # # Usage: headers_check.pl dir arch [files...] # dir: dir to look for included files # arch: architecture # files: list of files to check # # The script reads the supplied files line by line and: # # 1) for each include statement it checks if the # included file actually exists. # Only include files located in asm* and linux* are checked. # The rest are assumed to be system include files. # # 2) It is checked that prototypes does not use "extern" # # 3) Check for leaked CONFIG_ symbols use strict; use File::Basename; my ($dir, $arch, @files) = @ARGV; my $ret = 0; my $line; my $lineno = 0; my $filename; foreach my $file (@files) { $filename = $file; open(my $fh, '<', $filename) or die "$filename: $!\n"; $lineno = 0; while ($line = <$fh>) { $lineno++; &check_include(); &check_asm_types(); &check_sizetypes(); &check_declarations(); # Dropped for now. Too much noise &check_config(); } close $fh; } exit $ret; sub check_include { if ($line =~ m/^\s*#\s*include\s+<((asm|linux).*)>/) { my $inc = $1; my $found; $found = stat($dir . "/" . $inc); if (!$found) { $inc =~ s#asm/#asm-$arch/#; $found = stat($dir . "/" . $inc); } if (!$found) { printf STDERR "$filename:$lineno: included file '$inc' is not exported\n"; $ret = 1; } } } sub check_declarations { # soundcard.h is what it is if ($line =~ m/^void seqbuf_dump\(void\);/) { return; } # drm headers are being C++ friendly if ($line =~ m/^extern "C"/) { return; } if ($line =~ m/^(\s*extern|unsigned|char|short|int|long|void)\b/) { printf STDERR "$filename:$lineno: " . "userspace cannot reference function or " . "variable defined in the kernel\n"; } } sub check_config { if ($line =~ m/[^a-zA-Z0-9_]+CONFIG_([a-zA-Z0-9_]+)[^a-zA-Z0-9_]/) { printf STDERR "$filename:$lineno: leaks CONFIG_$1 to userspace where it is not valid\n"; } } my $linux_asm_types; sub check_asm_types { if ($filename =~ /types.h|int-l64.h|int-ll64.h/o) { return; } if ($lineno == 1) { $linux_asm_types = 0; } elsif ($linux_asm_types >= 1) { return; } if ($line =~ m/^\s*#\s*include\s+/) { $linux_asm_types = 1; printf STDERR "$filename:$lineno: " . "include of is preferred over \n" # Warn until headers are all fixed #$ret = 1; } } my $linux_types; my %import_stack = (); sub check_include_typesh { my $path = $_[0]; my $import_path; my $fh; my @file_paths = ($path, $dir . "/" . $path, dirname($filename) . "/" . $path); for my $possible ( @file_paths ) { if (not $import_stack{$possible} and open($fh, '<', $possible)) { $import_path = $possible; $import_stack{$import_path} = 1; last; } } if (eof $fh) { return; } my $line; while ($line = <$fh>) { if ($line =~ m/^\s*#\s*include\s+/) { $linux_types = 1; last; } if (my $included = ($line =~ /^\s*#\s*include\s+[<"](\S+)[>"]/)[0]) { check_include_typesh($included); } } close $fh; delete $import_stack{$import_path}; } sub check_sizetypes { if ($filename =~ /types.h|int-l64.h|int-ll64.h/o) { return; } if ($lineno == 1) { $linux_types = 0; } elsif ($linux_types >= 1) { return; } if ($line =~ m/^\s*#\s*include\s+/) { $linux_types = 1; return; } if (my $included = ($line =~ /^\s*#\s*include\s+[<"](\S+)[>"]/)[0]) { check_include_typesh($included); } if ($line =~ m/__[us](8|16|32|64)\b/) { printf STDERR "$filename:$lineno: " . "found __[us]{8,16,32,64} type " . "without #include \n"; $linux_types = 2; # Warn until headers are all fixed #$ret = 1; } } ion>space:mode:
Diffstat (limited to 'sound/soc/codecs/es8328.h')
ypto/async-tx-api.txt?h=nds-private-remove&id=5db4992d8f040b8d8db0b86d42806e0c417f7ccf'>5db4992d8f040b8d8db0b86d42806e0c417f7ccf (patch)
tree5b06e952af482d45f3ade64e77824662e34b7fa2 /Documentation/crypto/async-tx-api.txt
parent370ebb0ef6255132373ed35d13e7b1d8d2eb7003 (diff)
usbnet: pegasus: Use net_device_stats from struct net_devicends-private-remove
Instead of using a private copy of struct net_device_stats in struct pegasus, use stats from struct net_device. Also remove the now unnecessary .ndo_get_stats function. Cc: Petko Manolov <petkan@nucleusys.com> Cc: linux-usb@vger.kernel.org Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Diffstat (limited to 'Documentation/crypto/async-tx-api.txt')