1 #!/usr/local/bin/tclsh8.3
12 while {[gets $f a] >= 0} {
14 if {[regexp {struct[ ]*vnodeopv_entry_desc} "$a"]} {
15 regsub {.*vnodeopv_entry_desc[ ]*} $a {} a
17 regsub {_entries} $a {} a
25 if {[regexp {NULL} "$a"]} {
29 if {![regexp {vop.*_desc} "$a"]} continue
30 regsub -all {[,&]} $a " " a
31 regsub -all {\(vop_t \*\)} $a " " a
37 #puts "$name>> [lindex $b 0] >> [lindex $b 3]"
39 regsub {_desc} $o "" o
41 set op([list $name $o]) [lindex $b 1]
49 set fi [open "|find /usr/src/sys -type f -name *.c -print | xargs grep VNODEOP_SET" ]
50 while {[gets $fi a] >= 0} {
52 if {[regexp {#define} $a]} continue
53 if {[regexp {mallocfs} $a]} continue
54 do_file [lindex [split $a :] 0]
60 <TABLE BORDER WIDTH="100%" NOSAVE>
63 set opn [lsort [array names ops]]
64 set a [lsort [array names names]]
66 set tbn default_vnodeop
68 if {$i == "default_vnodeop"} continue
73 if {$i == "vop_default"} continue
75 lappend fl [format "%12s" $i]
78 lappend fl [format "%12s" default]
88 for {set i 0} {$i < 12} {incr i} {
89 puts $fo "[string index $j $i]<BR>"
95 set fnames(vop_defaultop) *
97 set fnames(vop_null) -
98 set fnames(vop_ebadf) b
99 set fnames(vop_einval) i
100 set fnames(vop_enotty) t
101 set fnames(vop_panic) !
102 set fnames(vfs_cache_lookup) C
103 set fnames(vop_eopnotsupp) *
110 puts $fo "<TD>$i</TD>"
111 set pfx [lindex [split $i _] 0]
113 if {$j == "vop_default"} continue
114 set sfx [lindex [split $j _] 1]
115 if {![info exists op([list $i $j])]} {
116 puts $fo "<TD BGCOLOR=\"#d0d0d0\"></TD>"
119 set t $op([list $i $j])
122 if {[info exists fnames($t)]} {
124 } elseif { $t == "${pfx}_${sfx}" } {
126 } elseif { $t == "vop_${sfx}" } {
128 } elseif { $t == "vop_no${sfx}" } {
130 } elseif { $t == "vop_std${sfx}" } {
132 } elseif { $sfx == "cachedlookup" && $t == "${pfx}_lookup" } {
135 if {![info exists nop($t)]} {
142 set t "<FONT SIZE=-1>$nop($t)</FONT>"
145 puts $fo "<TD BGCOLOR=\"$c\">$t</TD>"
148 if {![info exists op([list $i $j])]} {
152 puts $fo "<TD>$op([list $i $j])</TD>"
159 foreach i [lsort [array names fnames]] {
160 puts $fo [format "%-2s %s" $fnames($i) $i]
162 puts $fo [format "%-2s %s" "F" "<fs>_<vop>"]
163 puts $fo [format "%-2s %s" "V" "vop_<vop>"]
164 puts $fo [format "%-2s %s" "N" "vop_no<vop>"]
165 puts $fo [format "%-2s %s" "S" "vop_std<vop>"]
166 puts $fo [format "%-2s %s" "L" "<fs>_lookup"]
171 puts $fo {<TABLE BORDER NOSAVE>}
173 for {set i 1} {$i <= $fn} {incr i $m} {
175 for {set j 0} {$j < $m} {incr j} {
178 #puts $fo "<TD>$k</TD><TD><FONT SIZE=-1>$nfn($k)/$use($k)</FONT></TD>"
179 puts $fo "<TD>$k</TD><TD><FONT SIZE=-1>$nfn($k)</FONT></TD>"
190 if {$i == "default_vnodeop"} {
194 set sfx [lindex [split $j _] 1]
195 if {![info exists op([list $i $j])]} {
198 set v $op([list $i $j])
199 if {$v != "vop_std$sfx"} {
202 if {![info exists op([list default_vnodeop $j])]} {
205 if {$op([list default_vnodeop $j]) != $v} {
208 if {$op([list $i vop_default]) != "vop_defaultop"} {
211 puts "Suspect: uses explicit default, $i $j $v $op([list $i vop_default])"