Index: head/tools/tools/vop_table/vop_table.tcl =================================================================== --- head/tools/tools/vop_table/vop_table.tcl (revision 95949) +++ head/tools/tools/vop_table/vop_table.tcl (revision 95950) @@ -1,194 +1,213 @@ -#!/usr/local/bin/tclsh8.2 +#!/usr/local/bin/tclsh8.3 # $FreeBSD$ +set fo [open _.html w] + 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 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 { +puts $fo {
| } -puts { | } -puts "||||||||
| " +puts $fo { | ||||||||
| } +puts $fo { | } +puts $fo "||||||||
| " foreach j $fl { - puts " | " + puts $fo " | "
for {set i 0} {$i < 12} {incr i} {
- puts "[string index $j $i] " + puts $fo "[string index $j $i] " } - puts " | "
+ puts $fo ""
}
-puts "||||||
| $i | " + puts $fo {||||||||
| $i | " 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 $fo " | " 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 "#00ffff" + set c "#ffff00" } - puts " | $t | " + puts $fo "$t | " } set j vop_default if {![info exists op([list $i $j])]} { - puts "" + puts $fo " | " continue } - puts " | $op([list $i $j]) | " + puts $fo "$op([list $i $j]) | " - puts "
} +puts $fo "" +puts $fo "
" +puts $fo {} foreach i [lsort [array names fnames]] { - puts [format "%-2s %s" $fnames($i) $i] + puts $fo [format "%-2s %s" $fnames($i) $i] } -puts { +puts $fo [format "%-2s %s" "F" "} -puts "_ "] +puts $fo [format "%-2s %s" "V" "vop_ "] +puts $fo [format "%-2s %s" "N" "vop_no "] +puts $fo [format "%-2s %s" "S" "vop_std "] +puts $fo [format "%-2s %s" "L" " _lookup"] +puts $fo {
" -puts "
" -puts {
| $k | $nfn($k)/$use($k) | " - puts "$k | $nfn($k) | " + #puts $fo "$k | $nfn($k)/$use($k) | " + puts $fo "$k | $nfn($k) | " } } - puts "