As per Dr. Minnich's request. This is the original from Harvey; it is an 'rc' script.
Change-Id: If7e4014c87bbd5a9d7a7fc9989c23394ee2743c3 Signed-off-by: Dan Cross <[email protected]> --- kern/kfs/bin/pci | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100755 kern/kfs/bin/pci diff --git a/kern/kfs/bin/pci b/kern/kfs/bin/pci new file mode 100755 index 0000000..3b771e3 --- /dev/null +++ b/kern/kfs/bin/pci @@ -0,0 +1,116 @@ +#!/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 + +# DMG 06/02/2016 Make pci(8) recognize virtio devices +# source: http://git.qemu.org/?p=qemu.git;a=blob;f=include/hw/pci/pci.h +# devices with vendor code 0x1af4 are QEMU own virtio devices. +# useful device codes below: +# 0x1000: virtio network card +# 0x1001: virtio block device +# 0x1002: virtio balloon +# 0x1003: virtio console +# 0x1004: virtio SCSI +# 0x1005: virtio RNG (random numbers generator) +# 0x1009: virtio 9P transport +# based on this information, the translation table below is amended +# to show these devices in the pci (8) output. + +builtin cd '#$/pci' && grep . *ctl | { + if (~ $bridges no) + sed /:06/d + if not + cat + } | + sed ' + s/ctl:/: / + t noop +: noop + s/: (02\..*\ 1af4\/1000)/: virtio-net \1/ + s/: (01\..*\ 1af4\/1001)/: virtio-disk \1/ + s/: (00\..*\ 1af4\/1002)/: virtio-balloon \1/ + s/: (07\..*\ 1af4\/1003)/: virtio-console \1/ + s/: (01\..*\ 1af4\/1004)/: virtio-scsi \1/ + s/: (00\..*\ 1af4\/1005)/: virtio-rng \1/ + s/: (00\..*\ 1af4\/1009)/: virtio-9p \1/ + 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 -- 2.8.0.rc3.226.g39d4020 -- You received this message because you are subscribed to the Google Groups "Akaros" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. For more options, visit https://groups.google.com/d/optout.
