99 lines
1.5 KiB
Bash
Executable file
99 lines
1.5 KiB
Bash
Executable file
#!/bin/rc
|
|
# pci [-bv] - dump pci configuration
|
|
rfork e
|
|
fn verbose {
|
|
if (! test -f /lib/pci)
|
|
echo $0: no /lib/pci >[1=2]
|
|
awk '
|
|
|
|
function lower(s) {
|
|
gsub(/A/, "a", s)
|
|
gsub(/B/, "b", s)
|
|
gsub(/C/, "c", s)
|
|
gsub(/D/, "d", s)
|
|
gsub(/E/, "e", s)
|
|
gsub(/F/, "f", s)
|
|
return s
|
|
}
|
|
BEGIN{
|
|
file="/lib/pci"
|
|
FS="\t"
|
|
while(getline <file > 0){
|
|
if(/^[#;]/) continue
|
|
if(/^[0-9A-Fa-f]/){
|
|
vid=$1 #vid=lower($1)
|
|
vendor[vid] = $2
|
|
}
|
|
if(/^ [0-9A-Fa-f]/){
|
|
did=$2 #lower($2)
|
|
id[vid "/" did] = $3
|
|
}
|
|
}
|
|
FS = " "
|
|
}
|
|
|
|
{
|
|
print $0
|
|
vid = $4
|
|
sub(/\/.*/, "", vid)
|
|
if(vid in vendor){
|
|
s = vendor[vid]
|
|
if($4 in id)
|
|
s = s " " id[$4]
|
|
print "\t" s
|
|
}
|
|
}
|
|
'
|
|
}
|
|
|
|
filter=cat
|
|
flagfmt=v,b
|
|
args='[vid/did ...]'
|
|
if(! ifs=() eval `{aux/getflags $*}){
|
|
aux/usage
|
|
exit usage
|
|
}
|
|
|
|
if(! ~ $#* 0){
|
|
{
|
|
for(i in `{echo $* | tr 'A-Z' 'a-z'})
|
|
echo '- - -' $i
|
|
} | verbose | sed 's:^- - - ::'
|
|
exit ''
|
|
}
|
|
|
|
if(~ $#flagv 1)
|
|
filter=verbose
|
|
builtin cd '#$/pci' && grep . `{ls -n | grep ctl} | {
|
|
if (~ $#flagb 1)
|
|
sed /:06/d
|
|
if not
|
|
cat
|
|
} |
|
|
sed '
|
|
s/ctl:/: /
|
|
t noop
|
|
: noop
|
|
s/: 01/: disk 01/
|
|
s/: 02/: net 02/
|
|
s/: 03/: vid 03/
|
|
s/: 04/: aud 04/
|
|
s/: 05/: mem 05/
|
|
s/: 06/: brg 06/
|
|
s/: 07/: ser 07/
|
|
s/: 08/: base 08/
|
|
s/: 09/: inpt 09/
|
|
s/: 0a/: dock 0a/
|
|
s/: 0b/: proc 0b/
|
|
s/: 0c\.03/: usb 0c.03/
|
|
s/: 0c\.05/: smb 0c.05/
|
|
s/: 0c\.07/: ipmi 0c.07/
|
|
s/: 0d/: rad 0d/
|
|
s/: 0e/: intl 0e/
|
|
s/: 0f/: sat 0f/
|
|
s/: 10/: cryp 10/
|
|
s/: 11/: sigl 11/
|
|
s/: 12/: exl 12/
|
|
t
|
|
s/ / --- /
|
|
' | $filter
|