summaryrefslogtreecommitdiff
path: root/rc/bin/pci
diff options
context:
space:
mode:
authorTaru Karttunen <taruti@taruti.net>2011-03-30 17:14:36 +0300
committerTaru Karttunen <taruti@taruti.net>2011-03-30 17:14:36 +0300
commit2959e1ede0ebc6fdffd7b8660f43c2ce14c9696f (patch)
treef6343b1ce11a8c87251dd27cf3d3e26b50693fa7 /rc/bin/pci
parente463eb40363ff4c68b1d903f4e0cdd0ac1c5977f (diff)
downloadplan9front-2959e1ede0ebc6fdffd7b8660f43c2ce14c9696f.tar.xz
Import sources from 2011-03-30 iso image - rc
Diffstat (limited to 'rc/bin/pci')
-rwxr-xr-xrc/bin/pci95
1 files changed, 95 insertions, 0 deletions
diff --git a/rc/bin/pci b/rc/bin/pci
new file mode 100755
index 000000000..797c6b5c5
--- /dev/null
+++ b/rc/bin/pci
@@ -0,0 +1,95 @@
+#!/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=lower($1)
+ vendor[vid] = $2
+ }
+ if(/^ [0-9a-fA-F]/){
+ did=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
+ }
+ }
+'
+}
+fn usage {
+ echo usage: $1 '[-bv]' >[1=2]
+ exit usage
+}
+
+filter=cat
+bridges=yes
+done=0
+while (~ $done 0 && ! ~ $#* 0 && ~ $1 -*) {
+ if (~ $1 -*b*)
+ bridges=no
+ if (~ $1 -*v*)
+ filter=verbose
+ switch ($1) {
+ case --
+ done = 1 # no break in rc, alas
+ case -*[~bv]*
+ usage $0
+ }
+ shift
+}
+if (! ~ $#* 0)
+ usage $0
+
+builtin cd '#$/pci' && grep . *ctl | {
+ if (~ $bridges no)
+ 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/: 0c\.03/: usb 0c.03/
+ s/: 0c\.05/: smb 0c.05/
+ s/: 0d/: rad 0d/
+ s/: 10/: cryp 10/
+ t
+ s/ / --- /
+' | $filter