ref: dc512aea211afa46b9f98623d7cf70b4a12da0c1
dir: /rc/bin/pci/
#!/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