Index: head/tools/tools/vop_table/vop_table.tcl =================================================================== --- head/tools/tools/vop_table/vop_table.tcl (revision 95934) +++ head/tools/tools/vop_table/vop_table.tcl (revision 95935) @@ -1,173 +1,194 @@ -#!/bin/sh +#!/usr/local/bin/tclsh8.2 +# $FreeBSD$ proc do_file {file} { global names ops op set f [open $file] set s 0 while {[gets $f a] >= 0} { if {$s == 0} { if {[regexp {struct[ ]*vnodeopv_entry_desc} "$a"]} { regsub {.*vnodeopv_entry_desc[ ]*} $a {} a regsub {\[.*} $a {} a regsub {_entries} $a {} a set name $a set names($a) 0 set s 1 } continue } if {$s == 1} { if {[regexp {NULL} "$a"]} { set s 0 continue } if {![regexp {vop.*_desc} "$a"]} continue regsub -all {[,&]} $a " " a + regsub -all {\(vop_t \*\)} $a " " a set b [lindex $a 0] + if {"$b" == "/*"} { + set s 0 + continue + } #puts "$name>> [lindex $b 0] >> [lindex $b 3]" set o [lindex $b 0] regsub {_desc} $o "" o set ops($o) 0 - set op([list $name $o]) [lindex $b 3] + set op([list $name $o]) [lindex $b 1] continue } puts "$s>> $a" } close $f } set fi [open "|find [glob /usr/src/sys/*fs /usr/src/sys/gnu/*fs] /usr/src/sys/kern -type f -name *.c -print | xargs grep VNODEOP_SET" ] while {[gets $fi a] >= 0} { puts stderr $a if {[regexp {#define} $a]} continue if {[regexp {mallocfs} $a]} continue do_file [lindex [split $a :] 0] } close $fi puts { } set opn [lsort [array names ops]] set a [lsort [array names names]] set tbn default_vnodeop foreach i $a { if {$i == "default_vnodeop"} continue lappend tbn $i } foreach i $opn { if {$i == "vop_default"} continue regsub "vop_" $i "" i lappend fl [format "%12s" $i] } lappend fl [format "%12s" default] puts {} puts {} puts "" puts "" foreach j $fl { puts "" } puts "" set fnames(vop_defaultop) * +set fnames(vop_null) - +set fnames(vop_panic) ! +set fnames(vfs_cache_lookup) C +if {0} { set fnames(vop_nolock) nl set fnames(vop_noislocked) ni set fnames(vop_nounlock) nu set fnames(vop_stdlock) sl set fnames(vop_stdislocked) si set fnames(vop_stdunlock) su set fnames(vop_einval) I set fnames(vop_enotty) T -set fnames(vop_null) - set fnames(vop_eopnotsupp) S set fnames(ufs_missingop) M set fnames(vop_nopoll) np set fnames(vop_nostrategy) ns set fnames(vop_revoke) vr -set fnames(vfs_cache_lookup) cl set fnames(vop_stdpathconf) pc set fnames(vop_stdbwrite) bw +} set fn 0 set nop(aa) 0 unset nop(aa) foreach i $tbn { puts {} puts "" + set pfx [lindex [split $i _] 0] foreach j $opn { if {$j == "vop_default"} continue + set sfx [lindex [split $j _] 1] if {![info exists op([list $i $j])]} { - puts "" + puts "" continue } set t $op([list $i $j]) set c "#00ddd0" if {[info exists fnames($t)]} { set t $fnames($t) + } elseif { $t == "${pfx}_${sfx}" } { + set t "F" + } elseif { $t == "vop_${sfx}" } { + set t "V" + } elseif { $t == "vop_no${sfx}" } { + set t "N" + } elseif { $t == "vop_std${sfx}" } { + set t "S" + } elseif { $sfx == "cachedlookup" && $t == "${pfx}_lookup" } { + set t "L" } else { if {![info exists nop($t)]} { incr fn set nop($t) $fn set nfn($fn) $t set use($fn) 0 } incr use($nop($t)) set t "$nop($t)" - set c "#00ffd0" + set c "#00ffff" } puts "" } set j vop_default if {![info exists op([list $i $j])]} { puts "" continue } puts "" puts "" } puts "
} puts {
" for {set i 0} {$i < 12} {incr i} { puts "[string index $j $i]
" } puts "
$i$t$op([list $i $j])
" puts "
" puts {
}
 foreach i [lsort [array names fnames]] {
 	puts [format "%-2s %s" $fnames($i)  $i]
 }
 puts {
 
} puts "
" puts "
" puts {} set m 8 for {set i 1} {$i <= $fn} {incr i $m} { puts "" for {set j 0} {$j < $m} {incr j} { set k [expr $i + $j] if {$k <= $fn} { #puts "" puts "" } } puts "" } puts "
$k$nfn($k)/$use($k)$k$nfn($k)
" puts "" puts "" puts ""