head 1.12; access; symbols netbsd-10-0-RELEASE:1.12 netbsd-10-0-RC6:1.12 netbsd-10-0-RC5:1.12 netbsd-10-0-RC4:1.12 netbsd-10-0-RC3:1.12 netbsd-10-0-RC2:1.12 thorpej-ifq:1.12.0.102 thorpej-ifq-base:1.12 thorpej-altq-separation:1.12.0.100 thorpej-altq-separation-base:1.12 netbsd-10-0-RC1:1.12 netbsd-10:1.12.0.98 netbsd-10-base:1.12 bouyer-sunxi-drm:1.12.0.96 bouyer-sunxi-drm-base:1.12 netbsd-9-3-RELEASE:1.12 thorpej-i2c-spi-conf2:1.12.0.94 thorpej-i2c-spi-conf2-base:1.12 thorpej-futex2:1.12.0.92 thorpej-futex2-base:1.12 thorpej-cfargs2:1.12.0.90 thorpej-cfargs2-base:1.12 cjep_sun2x-base1:1.12 cjep_sun2x:1.12.0.88 cjep_sun2x-base:1.12 cjep_staticlib_x-base1:1.12 netbsd-9-2-RELEASE:1.12 cjep_staticlib_x:1.12.0.86 cjep_staticlib_x-base:1.12 thorpej-i2c-spi-conf:1.12.0.84 thorpej-i2c-spi-conf-base:1.12 thorpej-cfargs:1.12.0.82 thorpej-cfargs-base:1.12 thorpej-futex:1.12.0.80 thorpej-futex-base:1.12 netbsd-9-1-RELEASE:1.12 bouyer-xenpvh-base2:1.12 phil-wifi-20200421:1.12 bouyer-xenpvh-base1:1.12 phil-wifi-20200411:1.12 bouyer-xenpvh:1.12.0.78 bouyer-xenpvh-base:1.12 is-mlppp:1.12.0.76 is-mlppp-base:1.12 phil-wifi-20200406:1.12 netbsd-8-2-RELEASE:1.12 ad-namecache-base3:1.12 netbsd-9-0-RELEASE:1.12 netbsd-9-0-RC2:1.12 ad-namecache-base2:1.12 ad-namecache-base1:1.12 ad-namecache:1.12.0.74 ad-namecache-base:1.12 netbsd-9-0-RC1:1.12 phil-wifi-20191119:1.12 netbsd-9:1.12.0.72 netbsd-9-base:1.12 phil-wifi-20190609:1.12 netbsd-8-1-RELEASE:1.12 netbsd-8-1-RC1:1.12 isaki-audio2:1.12.0.70 isaki-audio2-base:1.12 pgoyette-compat-merge-20190127:1.12 pgoyette-compat-20190127:1.12 pgoyette-compat-20190118:1.12 pgoyette-compat-1226:1.12 pgoyette-compat-1126:1.12 pgoyette-compat-1020:1.12 pgoyette-compat-0930:1.12 pgoyette-compat-0906:1.12 netbsd-7-2-RELEASE:1.12 pgoyette-compat-0728:1.12 netbsd-8-0-RELEASE:1.12 phil-wifi:1.12.0.68 phil-wifi-base:1.12 pgoyette-compat-0625:1.12 netbsd-8-0-RC2:1.12 pgoyette-compat-0521:1.12 pgoyette-compat-0502:1.12 pgoyette-compat-0422:1.12 netbsd-8-0-RC1:1.12 pgoyette-compat-0415:1.12 pgoyette-compat-0407:1.12 pgoyette-compat-0330:1.12 pgoyette-compat-0322:1.12 pgoyette-compat-0315:1.12 netbsd-7-1-2-RELEASE:1.12 pgoyette-compat:1.12.0.66 pgoyette-compat-base:1.12 netbsd-7-1-1-RELEASE:1.12 tls-maxphys-base-20171202:1.12 matt-nb8-mediatek:1.12.0.64 matt-nb8-mediatek-base:1.12 nick-nhusb-base-20170825:1.12 perseant-stdc-iso10646:1.12.0.62 perseant-stdc-iso10646-base:1.12 netbsd-8:1.12.0.60 netbsd-8-base:1.12 prg-localcount2-base3:1.12 prg-localcount2-base2:1.12 prg-localcount2-base1:1.12 prg-localcount2:1.12.0.58 prg-localcount2-base:1.12 pgoyette-localcount-20170426:1.12 bouyer-socketcan-base1:1.12 jdolecek-ncq:1.12.0.56 jdolecek-ncq-base:1.12 pgoyette-localcount-20170320:1.12 netbsd-7-1:1.12.0.54 netbsd-7-1-RELEASE:1.12 netbsd-7-1-RC2:1.12 nick-nhusb-base-20170204:1.12 netbsd-7-nhusb-base-20170116:1.12 bouyer-socketcan:1.12.0.52 bouyer-socketcan-base:1.12 pgoyette-localcount-20170107:1.12 netbsd-7-1-RC1:1.12 nick-nhusb-base-20161204:1.12 pgoyette-localcount-20161104:1.12 netbsd-7-0-2-RELEASE:1.12 nick-nhusb-base-20161004:1.12 localcount-20160914:1.12 netbsd-7-nhusb:1.12.0.50 netbsd-7-nhusb-base:1.12 pgoyette-localcount-20160806:1.12 pgoyette-localcount-20160726:1.12 pgoyette-localcount:1.12.0.48 pgoyette-localcount-base:1.12 nick-nhusb-base-20160907:1.12 nick-nhusb-base-20160529:1.12 netbsd-7-0-1-RELEASE:1.12 nick-nhusb-base-20160422:1.12 nick-nhusb-base-20160319:1.12 nick-nhusb-base-20151226:1.12 netbsd-7-0:1.12.0.46 netbsd-7-0-RELEASE:1.12 nick-nhusb-base-20150921:1.12 netbsd-7-0-RC3:1.12 netbsd-7-0-RC2:1.12 netbsd-7-0-RC1:1.12 nick-nhusb-base-20150606:1.12 nick-nhusb-base-20150406:1.12 nick-nhusb:1.12.0.44 nick-nhusb-base:1.12 netbsd-5-2-3-RELEASE:1.11.44.1 netbsd-5-1-5-RELEASE:1.11.44.1 netbsd-6-0-6-RELEASE:1.12 netbsd-6-1-5-RELEASE:1.12 netbsd-7:1.12.0.42 netbsd-7-base:1.12 yamt-pagecache-base9:1.12 yamt-pagecache-tag8:1.12 netbsd-6-1-4-RELEASE:1.12 netbsd-6-0-5-RELEASE:1.12 tls-earlyentropy:1.12.0.40 tls-earlyentropy-base:1.12 riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.12 riastradh-drm2-base3:1.12 netbsd-6-1-3-RELEASE:1.12 netbsd-6-0-4-RELEASE:1.12 netbsd-5-2-2-RELEASE:1.11.44.1 netbsd-5-1-4-RELEASE:1.11.44.1 netbsd-6-1-2-RELEASE:1.12 netbsd-6-0-3-RELEASE:1.12 netbsd-5-2-1-RELEASE:1.11.44.1 netbsd-5-1-3-RELEASE:1.11.44.1 rmind-smpnet-nbase:1.12 netbsd-6-1-1-RELEASE:1.12 riastradh-drm2-base2:1.12 riastradh-drm2-base1:1.12 riastradh-drm2:1.12.0.38 riastradh-drm2-base:1.12 rmind-smpnet:1.12.0.30 rmind-smpnet-base:1.12 netbsd-6-1:1.12.0.36 netbsd-6-0-2-RELEASE:1.12 netbsd-6-1-RELEASE:1.12 khorben-n900:1.12.0.34 netbsd-6-1-RC4:1.12 netbsd-6-1-RC3:1.12 agc-symver:1.12.0.32 agc-symver-base:1.12 netbsd-6-1-RC2:1.12 netbsd-6-1-RC1:1.12 yamt-pagecache-base8:1.12 netbsd-5-2:1.11.44.1.0.10 netbsd-6-0-1-RELEASE:1.12 yamt-pagecache-base7:1.12 netbsd-5-2-RELEASE:1.11.44.1 netbsd-5-2-RC1:1.11.44.1 matt-nb6-plus-nbase:1.12 yamt-pagecache-base6:1.12 netbsd-6-0:1.12.0.28 netbsd-6-0-RELEASE:1.12 netbsd-6-0-RC2:1.12 tls-maxphys:1.12.0.26 tls-maxphys-base:1.12 matt-nb6-plus:1.12.0.24 matt-nb6-plus-base:1.12 netbsd-6-0-RC1:1.12 jmcneill-usbmp-base10:1.12 yamt-pagecache-base5:1.12 jmcneill-usbmp-base9:1.12 yamt-pagecache-base4:1.12 jmcneill-usbmp-base8:1.12 jmcneill-usbmp-base7:1.12 jmcneill-usbmp-base6:1.12 jmcneill-usbmp-base5:1.12 jmcneill-usbmp-base4:1.12 jmcneill-usbmp-base3:1.12 jmcneill-usbmp-pre-base2:1.12 jmcneill-usbmp-base2:1.12 netbsd-6:1.12.0.22 netbsd-6-base:1.12 netbsd-5-1-2-RELEASE:1.11.44.1 netbsd-5-1-1-RELEASE:1.11.44.1 jmcneill-usbmp:1.12.0.20 jmcneill-usbmp-base:1.12 jmcneill-audiomp3:1.12.0.18 jmcneill-audiomp3-base:1.12 yamt-pagecache-base3:1.12 yamt-pagecache-base2:1.12 yamt-pagecache:1.12.0.16 yamt-pagecache-base:1.12 rmind-uvmplock-nbase:1.12 cherry-xenmp:1.12.0.14 cherry-xenmp-base:1.12 bouyer-quota2-nbase:1.12 bouyer-quota2:1.12.0.12 bouyer-quota2-base:1.12 jruoho-x86intr:1.12.0.10 jruoho-x86intr-base:1.12 matt-mips64-premerge-20101231:1.12 matt-nb5-mips64-premerge-20101231:1.11.44.1 matt-nb5-pq3:1.11.44.1.0.8 matt-nb5-pq3-base:1.11.44.1 netbsd-5-1:1.11.44.1.0.6 netbsd-5-1-RELEASE:1.11.44.1 uebayasi-xip-base4:1.12 uebayasi-xip-base3:1.12 yamt-nfs-mp-base11:1.12 netbsd-5-1-RC4:1.11.44.1 matt-nb5-mips64-k15:1.11.44.1 uebayasi-xip-base2:1.12 yamt-nfs-mp-base10:1.12 netbsd-5-1-RC3:1.11.44.1 netbsd-5-1-RC2:1.11.44.1 uebayasi-xip-base1:1.12 netbsd-5-1-RC1:1.11.44.1 rmind-uvmplock:1.12.0.8 rmind-uvmplock-base:1.12 yamt-nfs-mp-base9:1.12 uebayasi-xip:1.12.0.6 uebayasi-xip-base:1.12 netbsd-5-0-2-RELEASE:1.11.44.1 matt-nb5-mips64-premerge-20091211:1.11.44.1 matt-premerge-20091211:1.12 yamt-nfs-mp-base8:1.12 matt-nb5-mips64-u2-k2-k4-k7-k8-k9:1.11.44.1 matt-nb4-mips64-k7-u2a-k9b:1.11.44.1 matt-nb5-mips64-u1-k1-k5:1.11.44.1 yamt-nfs-mp-base7:1.12 matt-nb5-mips64:1.11.44.1.0.4 netbsd-5-0-1-RELEASE:1.11.44.1 jymxensuspend-base:1.12 yamt-nfs-mp-base6:1.12 yamt-nfs-mp-base5:1.12 yamt-nfs-mp-base4:1.12 jym-xensuspend-nbase:1.12 yamt-nfs-mp-base3:1.12 nick-hppapmap-base4:1.12 nick-hppapmap-base3:1.12 netbsd-5-0:1.11.44.1.0.2 netbsd-5-0-RELEASE:1.11.44.1 netbsd-5-0-RC4:1.11.44.1 netbsd-5-0-RC3:1.11.44.1 nick-hppapmap-base2:1.12 netbsd-5-0-RC2:1.11.44.1 jym-xensuspend:1.12.0.4 jym-xensuspend-base:1.12 netbsd-5-0-RC1:1.11.44.1 haad-dm-base2:1.12 haad-nbase2:1.12 ad-audiomp2:1.12.0.2 ad-audiomp2-base:1.12 netbsd-5:1.11.0.44 netbsd-5-base:1.11 nick-hppapmap:1.11.0.42 nick-hppapmap-base:1.12 matt-mips64-base2:1.11 matt-mips64:1.11.0.40 haad-dm-base1:1.11 wrstuden-revivesa-base-4:1.11 netbsd-4-0-1-RELEASE:1.10 wrstuden-revivesa-base-3:1.11 wrstuden-revivesa-base-2:1.11 wrstuden-fixsa-newbase:1.10 nick-csl-alignment-base5:1.11 haad-dm:1.11.0.38 haad-dm-base:1.12 wrstuden-revivesa-base-1:1.11 simonb-wapbl-nbase:1.11 yamt-pf42-base4:1.11 simonb-wapbl:1.11.0.36 simonb-wapbl-base:1.11 yamt-pf42-base3:1.11 hpcarm-cleanup-nbase:1.11 yamt-pf42-baseX:1.11 yamt-pf42-base2:1.11 yamt-nfs-mp-base2:1.11 wrstuden-revivesa:1.11.0.34 wrstuden-revivesa-base:1.11 yamt-nfs-mp:1.11.0.32 yamt-nfs-mp-base:1.11 yamt-pf42:1.11.0.30 yamt-pf42-base:1.11 ad-socklock-base1:1.11 yamt-lazymbuf-base15:1.11 yamt-lazymbuf-base14:1.11 keiichi-mipv6-nbase:1.11 mjf-devfs2:1.11.0.28 mjf-devfs2-base:1.12 nick-net80211-sync:1.11.0.26 nick-net80211-sync-base:1.11 keiichi-mipv6:1.11.0.24 keiichi-mipv6-base:1.11 ad-audiomp-base-1:1.11 bouyer-xeni386-merge1:1.11 matt-armv6-prevmlocking:1.11 wrstuden-fixsa-base-1:1.10 vmlocking2-base3:1.11 netbsd-4-0:1.10.0.20 netbsd-4-0-RELEASE:1.10 bouyer-xeni386-nbase:1.11 yamt-kmem-base3:1.11 cube-autoconf:1.11.0.22 cube-autoconf-base:1.11 yamt-kmem-base2:1.11 bouyer-xeni386:1.11.0.20 bouyer-xeni386-base:1.11 yamt-kmem:1.11.0.18 yamt-kmem-base:1.11 vmlocking2-base2:1.11 reinoud-bufcleanup-nbase:1.11 vmlocking2:1.11.0.16 vmlocking2-base1:1.11 netbsd-4-0-RC5:1.10 matt-nb4-arm:1.10.0.18 matt-nb4-arm-base:1.10 matt-armv6-nbase:1.11 jmcneill-base:1.11 netbsd-4-0-RC4:1.10 mjf-devfs:1.11.0.14 mjf-devfs-base:1.11 bouyer-xenamd64-base2:1.11 vmlocking-nbase:1.11 yamt-x86pmap-base4:1.11 bouyer-xenamd64:1.11.0.12 bouyer-xenamd64-base:1.11 netbsd-4-0-RC3:1.10 yamt-x86pmap-base3:1.11 yamt-x86pmap-base2:1.11 netbsd-4-0-RC2:1.10 yamt-x86pmap:1.11.0.10 yamt-x86pmap-base:1.11 netbsd-4-0-RC1:1.10 matt-armv6:1.11.0.8 matt-armv6-base:1.11 matt-mips64-base:1.11 jmcneill-pm:1.11.0.6 jmcneill-pm-base:1.11 hpcarm-cleanup:1.11.0.4 hpcarm-cleanup-base:1.11 nick-csl-alignment:1.11.0.2 nick-csl-alignment-base:1.11 netbsd-3-1-1-RELEASE:1.5 netbsd-3-0-3-RELEASE:1.5 yamt-idlelwp-base8:1.10 wrstuden-fixsa:1.10.0.16 wrstuden-fixsa-base:1.10 thorpej-atomic:1.10.0.14 thorpej-atomic-base:1.10 reinoud-bufcleanup:1.10.0.12 reinoud-bufcleanup-base:1.11 mjf-ufs-trans:1.10.0.10 mjf-ufs-trans-base:1.11 vmlocking:1.10.0.8 vmlocking-base:1.11 ad-audiomp:1.10.0.6 ad-audiomp-base:1.10 yamt-idlelwp:1.10.0.4 post-newlock2-merge:1.10 newlock2-nbase:1.10 yamt-splraiseipl-base5:1.10 yamt-splraiseipl-base4:1.10 yamt-splraiseipl-base3:1.10 abandoned-netbsd-4-base:1.8 abandoned-netbsd-4:1.8.0.12 netbsd-3-1:1.5.0.28 netbsd-3-1-RELEASE:1.5 netbsd-3-0-2-RELEASE:1.5 yamt-splraiseipl-base2:1.10 netbsd-3-1-RC4:1.5 yamt-splraiseipl:1.8.0.16 yamt-splraiseipl-base:1.8 netbsd-3-1-RC3:1.5 yamt-pdpolicy-base9:1.8 newlock2:1.8.0.14 newlock2-base:1.10 yamt-pdpolicy-base8:1.8 netbsd-3-1-RC2:1.5 netbsd-3-1-RC1:1.5 yamt-pdpolicy-base7:1.8 netbsd-4:1.10.0.2 netbsd-4-base:1.10 yamt-pdpolicy-base6:1.8 chap-midi-nbase:1.8 netbsd-3-0-1-RELEASE:1.5 gdamore-uart:1.8.0.10 gdamore-uart-base:1.8 simonb-timcounters-final:1.7.6.1 yamt-pdpolicy-base5:1.8 chap-midi:1.8.0.8 chap-midi-base:1.8 yamt-pdpolicy-base4:1.8 yamt-pdpolicy-base3:1.8 peter-altq-base:1.8 peter-altq:1.8.0.6 yamt-pdpolicy-base2:1.8 elad-kernelauth-base:1.8 elad-kernelauth:1.8.0.4 yamt-pdpolicy:1.8.0.2 yamt-pdpolicy-base:1.8 yamt-uio_vmspace-base5:1.8 simonb-timecounters:1.7.0.6 simonb-timecounters-base:1.8 rpaulo-netinet-merge-pcb:1.7.0.4 rpaulo-netinet-merge-pcb-base:1.8 yamt-uio_vmspace:1.7.0.2 netbsd-3-0:1.5.0.26 netbsd-3-0-RELEASE:1.5 netbsd-3-0-RC6:1.5 yamt-readahead-base3:1.5 netbsd-3-0-RC5:1.5 netbsd-3-0-RC4:1.5 netbsd-3-0-RC3:1.5 yamt-readahead-base2:1.5 netbsd-3-0-RC2:1.5 yamt-readahead-pervnode:1.5 yamt-readahead-perfile:1.5 yamt-readahead:1.5.0.24 yamt-readahead-base:1.5 netbsd-3-0-RC1:1.5 yamt-vop-base3:1.5 netbsd-2-0-3-RELEASE:1.5 netbsd-2-1:1.5.0.22 yamt-vop-base2:1.5 thorpej-vnode-attr:1.5.0.20 thorpej-vnode-attr-base:1.5 netbsd-2-1-RELEASE:1.5 yamt-vop:1.5.0.18 yamt-vop-base:1.5 netbsd-2-1-RC6:1.5 netbsd-2-1-RC5:1.5 netbsd-2-1-RC4:1.5 netbsd-2-1-RC3:1.5 netbsd-2-1-RC2:1.5 netbsd-2-1-RC1:1.5 yamt-lazymbuf:1.5.0.16 yamt-km-base4:1.5 netbsd-2-0-2-RELEASE:1.5 yamt-km-base3:1.5 netbsd-3:1.5.0.14 netbsd-3-base:1.5 yamt-km-base2:1.5 yamt-km:1.5.0.10 yamt-km-base:1.5 kent-audio2:1.5.0.8 kent-audio2-base:1.5 netbsd-2-0-1-RELEASE:1.5 kent-audio1-beforemerge:1.5 netbsd-2:1.5.0.6 netbsd-2-base:1.5 kent-audio1:1.5.0.4 kent-audio1-base:1.5 netbsd-2-0-RELEASE:1.5 netbsd-2-0-RC5:1.5 netbsd-2-0-RC4:1.5 netbsd-2-0-RC3:1.5 netbsd-2-0-RC2:1.5 netbsd-2-0-RC1:1.5 netbsd-2-0:1.5.0.2 netbsd-2-0-base:1.5 netbsd-1-6-PATCH002-RELEASE:1.2 netbsd-1-6-PATCH002:1.2 netbsd-1-6-PATCH002-RC4:1.2 netbsd-1-6-PATCH002-RC3:1.2 netbsd-1-6-PATCH002-RC2:1.2 netbsd-1-6-PATCH002-RC1:1.2 ktrace-lwp:1.4.0.6 ktrace-lwp-base:1.5 netbsd-1-6-PATCH001:1.2 netbsd-1-6-PATCH001-RELEASE:1.2 netbsd-1-6-PATCH001-RC3:1.2 netbsd-1-6-PATCH001-RC2:1.2 netbsd-1-6-PATCH001-RC1:1.2 nathanw_sa_end:1.2.4.2 nathanw_sa_before_merge:1.4 fvdl_fs64_base:1.4 gmcgarry_ctxsw:1.4.0.4 gmcgarry_ctxsw_base:1.4 gmcgarry_ucred:1.4.0.2 gmcgarry_ucred_base:1.4 nathanw_sa_base:1.4 kqueue-aftermerge:1.3 kqueue-beforemerge:1.3 netbsd-1-6-RELEASE:1.2 netbsd-1-6-RC3:1.2 netbsd-1-6-RC2:1.2 netbsd-1-6-RC1:1.2 netbsd-1-6:1.2.0.20 netbsd-1-6-base:1.2 gehenna-devsw:1.2.0.18 gehenna-devsw-base:1.3 eeh-devprop:1.2.0.16 eeh-devprop-base:1.2 newlock:1.2.0.14 newlock-base:1.2 ifpoll-base:1.2 thorpej-mips-cache:1.2.0.10 thorpej-mips-cache-base:1.2 thorpej-devvp-base3:1.2 thorpej-devvp-base2:1.2 post-chs-ubcperf:1.2 pre-chs-ubcperf:1.2 thorpej-devvp:1.2.0.8 thorpej-devvp-base:1.2 kqueue:1.2.0.6 kqueue-base:1.3 thorpej_scsipi_beforemerge:1.2 nathanw_sa:1.2.0.4 thorpej_scsipi_nbase:1.2 thorpej_scsipi_base:1.2 thorpej_scsipi:1.2.0.2 kame_15_20001214:1.1.1.1 kame:1.1.1; locks; strict; comment @ * @; 1.12 date 2008.11.25.15.59.10; author tsutsui; state Exp; branches; next 1.11; 1.11 date 2007.07.09.21.10.46; author ad; state Exp; branches 1.11.28.1 1.11.32.1 1.11.38.1 1.11.42.1 1.11.44.1; next 1.10; 1.10 date 2006.10.15.13.17.13; author peter; state Exp; branches 1.10.8.1 1.10.10.1; next 1.9; 1.9 date 2006.10.12.19.59.08; author peter; state Exp; branches; next 1.8; 1.8 date 2006.02.16.20.17.12; author perry; state Exp; branches 1.8.6.1 1.8.14.1 1.8.16.1; next 1.7; 1.7 date 2005.12.24.20.10.16; author perry; state Exp; branches 1.7.2.1 1.7.4.1 1.7.6.1; next 1.6; 1.6 date 2005.12.11.12.16.03; author christos; state Exp; branches; next 1.5; 1.5 date 2003.11.09.22.11.12; author christos; state Exp; branches 1.5.16.1; next 1.4; 1.4 date 2002.11.02.07.17.31; author perry; state Exp; branches 1.4.6.1; next 1.3; 1.3 date 2002.05.31.06.52.00; author itojun; state Exp; branches; next 1.2; 1.2 date 2000.12.14.08.49.51; author thorpej; state Exp; branches 1.2.2.1 1.2.4.1 1.2.6.1 1.2.18.1; next 1.1; 1.1 date 2000.12.14.08.42.43; author thorpej; state Exp; branches 1.1.1.1; next ; 1.11.28.1 date 2009.01.17.13.27.46; author mjf; state Exp; branches; next ; 1.11.32.1 date 2009.05.04.08.10.23; author yamt; state Exp; branches; next ; 1.11.38.1 date 2008.12.13.01.12.55; author haad; state Exp; branches; next ; 1.11.42.1 date 2009.01.19.13.15.50; author skrll; state Exp; branches; next ; 1.11.44.1 date 2008.12.01.00.55.55; author snj; state Exp; branches; next ; 1.10.8.1 date 2007.07.01.21.50.33; author ad; state Exp; branches; next ; 1.10.10.1 date 2007.07.11.19.57.11; author mjf; state Exp; branches; next ; 1.8.6.1 date 2006.03.18.12.08.18; author peter; state Exp; branches; next ; 1.8.14.1 date 2006.11.18.21.39.03; author ad; state Exp; branches; next ; 1.8.16.1 date 2006.10.22.06.04.30; author yamt; state Exp; branches; next ; 1.7.2.1 date 2006.02.18.15.38.30; author yamt; state Exp; branches; next ; 1.7.4.1 date 2006.09.09.02.36.40; author rpaulo; state Exp; branches; next ; 1.7.6.1 date 2006.04.22.11.37.09; author simonb; state Exp; branches; next ; 1.5.16.1 date 2006.06.21.14.47.46; author yamt; state Exp; branches; next 1.5.16.2; 1.5.16.2 date 2006.12.30.20.45.17; author yamt; state Exp; branches; next 1.5.16.3; 1.5.16.3 date 2007.09.03.14.21.59; author yamt; state Exp; branches; next ; 1.4.6.1 date 2004.08.03.10.30.47; author skrll; state Exp; branches; next 1.4.6.2; 1.4.6.2 date 2004.09.18.14.30.29; author skrll; state Exp; branches; next 1.4.6.3; 1.4.6.3 date 2004.09.21.13.11.19; author skrll; state Exp; branches; next ; 1.2.2.1 date 2000.12.14.08.49.51; author bouyer; state dead; branches; next 1.2.2.2; 1.2.2.2 date 2001.01.05.17.39.38; author bouyer; state Exp; branches; next ; 1.2.4.1 date 2002.06.20.03.37.17; author nathanw; state Exp; branches; next 1.2.4.2; 1.2.4.2 date 2002.11.11.21.55.45; author nathanw; state Exp; branches; next ; 1.2.6.1 date 2002.06.23.17.33.33; author jdolecek; state Exp; branches; next ; 1.2.18.1 date 2002.06.20.16.43.11; author gehenna; state Exp; branches; next ; 1.1.1.1 date 2000.12.14.08.42.43; author thorpej; state Exp; branches; next ; desc @@ 1.12 log @In machclk functions always emulate 1GHz counter using nanotime(9) since it has enough resolution via timecounter(9). Using machine dependent cpu_counter() is not MP safe and it won't work even on UP with Speedstep etc. No particular comment on tech-kern, and also closes PR kern/39835. @ text @/* $NetBSD: altq_var.h,v 1.11 2007/07/09 21:10:46 ad Exp $ */ /* $KAME: altq_var.h,v 1.18 2005/04/13 03:44:25 suz Exp $ */ /* * Copyright (C) 1998-2003 * Sony Computer Science Laboratories Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY SONY CSL AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL SONY CSL OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef _ALTQ_ALTQ_VAR_H_ #define _ALTQ_ALTQ_VAR_H_ #ifdef _KERNEL #include #include #include #ifdef ALTQ3_CLFIER_COMPAT /* * filter structure for altq common classifier */ struct acc_filter { LIST_ENTRY(acc_filter) f_chain; void *f_class; /* pointer to the class */ u_long f_handle; /* filter id */ u_int32_t f_fbmask; /* filter bitmask */ struct flow_filter f_filter; /* filter value */ }; /* * XXX ACC_FILTER_TABLESIZE can't be larger than 2048 unless we fix * the handle assignment. */ #define ACC_FILTER_TABLESIZE (256+1) #define ACC_FILTER_MASK (ACC_FILTER_TABLESIZE - 2) #define ACC_WILDCARD_INDEX (ACC_FILTER_TABLESIZE - 1) #ifdef __GNUC__ #define ACC_GET_HASH_INDEX(addr) \ ({int x = (addr) + ((addr) >> 16); (x + (x >> 8)) & ACC_FILTER_MASK;}) #else #define ACC_GET_HASH_INDEX(addr) \ (((addr) + ((addr) >> 8) + ((addr) >> 16) + ((addr) >> 24)) \ & ACC_FILTER_MASK) #endif #define ACC_GET_HINDEX(handle) ((handle) >> 20) #if (__FreeBSD_version > 500000) #define ACC_LOCK_INIT(ac) mtx_init(&(ac)->acc_mtx, "classifier", MTX_DEF) #define ACC_LOCK_DESTROY(ac) mtx_destroy(&(ac)->acc_mtx) #define ACC_LOCK(ac) mtx_lock(&(ac)->acc_mtx) #define ACC_UNLOCK(ac) mtx_unlock(&(ac)->acc_mtx) #else #define ACC_LOCK_INIT(ac) #define ACC_LOCK_DESTROY(ac) #define ACC_LOCK(ac) #define ACC_UNLOCK(ac) #endif struct acc_classifier { u_int32_t acc_fbmask; LIST_HEAD(filt, acc_filter) acc_filters[ACC_FILTER_TABLESIZE]; #if (__FreeBSD_version > 500000) struct mtx acc_mtx; #endif }; /* * flowinfo mask bits used by classifier */ /* for ipv4 */ #define FIMB4_PROTO 0x0001 #define FIMB4_TOS 0x0002 #define FIMB4_DADDR 0x0004 #define FIMB4_SADDR 0x0008 #define FIMB4_DPORT 0x0010 #define FIMB4_SPORT 0x0020 #define FIMB4_GPI 0x0040 #define FIMB4_ALL 0x007f /* for ipv6 */ #define FIMB6_PROTO 0x0100 #define FIMB6_TCLASS 0x0200 #define FIMB6_DADDR 0x0400 #define FIMB6_SADDR 0x0800 #define FIMB6_DPORT 0x1000 #define FIMB6_SPORT 0x2000 #define FIMB6_GPI 0x4000 #define FIMB6_FLABEL 0x8000 #define FIMB6_ALL 0xff00 #define FIMB_ALL (FIMB4_ALL|FIMB6_ALL) #define FIMB4_PORTS (FIMB4_DPORT|FIMB4_SPORT|FIMB4_GPI) #define FIMB6_PORTS (FIMB6_DPORT|FIMB6_SPORT|FIMB6_GPI) #endif /* ALTQ3_CLFIER_COMPAT */ /* * machine dependent clock * a 64bit high resolution time counter. */ extern u_int32_t machclk_freq; extern u_int32_t machclk_per_tick; extern void init_machclk(void); extern u_int64_t read_machclk(void); /* * debug support */ #ifdef ALTQ_DEBUG #ifdef __STDC__ #define ASSERT(e) ((e) ? (void)0 : altq_assert(__FILE__, __LINE__, #e)) #else /* PCC */ #define ASSERT(e) ((e) ? (void)0 : altq_assert(__FILE__, __LINE__, "e")) #endif #else #define ASSERT(e) ((void)0) #endif /* * misc stuff for compatibility */ /* ioctl cmd type */ typedef u_long ioctlcmd_t; /* * queue macros: * the interface of TAILQ_LAST macro changed after the introduction * of softupdate. redefine it here to make it work with pre-2.2.7. */ #undef TAILQ_LAST #define TAILQ_LAST(head, headname) \ (*(((struct headname *)((head)->tqh_last))->tqh_last)) #ifndef TAILQ_EMPTY #define TAILQ_EMPTY(head) ((head)->tqh_first == NULL) #endif #ifndef TAILQ_FOREACH #define TAILQ_FOREACH(var, head, field) \ for (var = TAILQ_FIRST(head); var; var = TAILQ_NEXT(var, field)) #endif /* macro for timeout/untimeout */ #if (__FreeBSD_version > 300000) || defined(__NetBSD__) /* use callout */ #include #if (__FreeBSD_version > 500000) || defined(__NetBSD__) #define CALLOUT_INIT(c) callout_init((c), 0) #else #define CALLOUT_INIT(c) callout_init((c)) #endif #define CALLOUT_RESET(c,t,f,a) callout_reset((c),(t),(f),(a)) #define CALLOUT_STOP(c) callout_stop((c)) #ifndef CALLOUT_INITIALIZER #define CALLOUT_INITIALIZER { { { NULL } }, 0, NULL, NULL, 0 } #endif #elif defined(__OpenBSD__) #include /* callout structure as a wrapper of struct timeout */ struct callout { struct timeout c_to; }; #define CALLOUT_INIT(c) do { (void)memset((c), 0, sizeof(*(c))); } while (/*CONSTCOND*/ 0) #define CALLOUT_RESET(c,t,f,a) do { if (!timeout_initialized(&(c)->c_to)) \ timeout_set(&(c)->c_to, (f), (a)); \ timeout_add(&(c)->c_to, (t)); } while (/*CONSTCOND*/ 0) #define CALLOUT_STOP(c) timeout_del(&(c)->c_to) #define CALLOUT_INITIALIZER { { { NULL }, NULL, NULL, 0, 0 } } #else /* use old-style timeout/untimeout */ /* dummy callout structure */ struct callout { void *c_arg; /* function argument */ void (*c_func)(void *); /* functiuon to call */ }; #define CALLOUT_INIT(c) do { (void)memset((c), 0, sizeof(*(c))); } while (/*CONSTCOND*/ 0) #define CALLOUT_RESET(c,t,f,a) do { (c)->c_arg = (a); \ (c)->c_func = (f); \ timeout((f),(a),(t)); } while (/*CONSTCOND*/ 0) #define CALLOUT_STOP(c) untimeout((c)->c_func,(c)->c_arg) #define CALLOUT_INITIALIZER { NULL, NULL } #endif #if !defined(__FreeBSD__) typedef void (timeout_t)(void *); #endif #define m_pktlen(m) ((m)->m_pkthdr.len) struct ifnet; struct mbuf; struct pf_altq; #ifdef ALTQ3_CLFIER_COMPAT struct flowinfo; #endif void *altq_lookup(char *, int); #ifdef ALTQ3_CLFIER_COMPAT int altq_extractflow(struct mbuf *, int, struct flowinfo *, u_int32_t); int acc_add_filter(struct acc_classifier *, struct flow_filter *, void *, u_long *); int acc_delete_filter(struct acc_classifier *, u_long); int acc_discard_filters(struct acc_classifier *, void *, int); void *acc_classify(void *, struct mbuf *, int); #endif u_int8_t read_dsfield(struct mbuf *, struct altq_pktattr *); void write_dsfield(struct mbuf *, struct altq_pktattr *, u_int8_t); void altq_assert(const char *, int, const char *); int tbr_set(struct ifaltq *, struct tb_profile *); int tbr_get(struct ifaltq *, struct tb_profile *); int altq_pfattach(struct pf_altq *); int altq_pfdetach(struct pf_altq *); int altq_add(struct pf_altq *); int altq_remove(struct pf_altq *); int altq_add_queue(struct pf_altq *); int altq_remove_queue(struct pf_altq *); int altq_getqstats(struct pf_altq *, void *, int *); int cbq_pfattach(struct pf_altq *); int cbq_add_altq(struct pf_altq *); int cbq_remove_altq(struct pf_altq *); int cbq_add_queue(struct pf_altq *); int cbq_remove_queue(struct pf_altq *); int cbq_getqstats(struct pf_altq *, void *, int *); int priq_pfattach(struct pf_altq *); int priq_add_altq(struct pf_altq *); int priq_remove_altq(struct pf_altq *); int priq_add_queue(struct pf_altq *); int priq_remove_queue(struct pf_altq *); int priq_getqstats(struct pf_altq *, void *, int *); int hfsc_pfattach(struct pf_altq *); int hfsc_add_altq(struct pf_altq *); int hfsc_remove_altq(struct pf_altq *); int hfsc_add_queue(struct pf_altq *); int hfsc_remove_queue(struct pf_altq *); int hfsc_getqstats(struct pf_altq *, void *, int *); #endif /* _KERNEL */ #endif /* _ALTQ_ALTQ_VAR_H_ */ @ 1.11 log @Merge some of the less invasive changes from the vmlocking branch: - kthread, callout, devsw API changes - select()/poll() improvements - miscellaneous MT safety improvements @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.10 2006/10/15 13:17:13 peter Exp $ */ a120 1 extern int machclk_usepcc; @ 1.11.32.1 log @sync with head. @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.11 2007/07/09 21:10:46 ad Exp $ */ d121 1 @ 1.11.42.1 log @Sync with HEAD. @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.12 2008/11/25 15:59:10 tsutsui Exp $ */ d121 1 @ 1.11.28.1 log @Sync with HEAD. @ text @d1 1 a1 1 /* $NetBSD$ */ d121 1 @ 1.11.38.1 log @Update haad-dm branch to haad-dm-base2. @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.12 2008/11/25 15:59:10 tsutsui Exp $ */ d121 1 @ 1.11.44.1 log @Pull up following revision(s) (requested by tsutsui in ticket #152): sys/altq/altq_subr.c: revision 1.26 sys/altq/altq_var.h: revision 1.12 In machclk functions always emulate 1GHz counter using nanotime(9) since it has enough resolution via timecounter(9). Using machine dependent cpu_counter() is not MP safe and it won't work even on UP with Speedstep etc. No particular comment on tech-kern, and also closes PR kern/39835. @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.11 2007/07/09 21:10:46 ad Exp $ */ d121 1 @ 1.10 log @Don't enable ALTQ in altq_pfattach. Enabling/disabling of ALTQ is already done in the pf(4) code (pf_ioctl.c). From OpenBSD. @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.9 2006/10/12 19:59:08 peter Exp $ */ d168 1 a168 1 #if (__FreeBSD_version > 500000) @ 1.10.10.1 log @Sync with head. @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.11 2007/07/09 21:10:46 ad Exp $ */ d168 1 a168 1 #if (__FreeBSD_version > 500000) || defined(__NetBSD__) @ 1.10.8.1 log @Adapt to callout API change. @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.10 2006/10/15 13:17:13 peter Exp $ */ d168 1 a168 1 #if (__FreeBSD_version > 500000) || defined(__NetBSD__) @ 1.9 log @Merge the peter-altq branch. (sync with KAME & add support for using ALTQ with pf(4)). @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.8.6.1 2006/03/18 12:08:18 peter Exp $ */ a209 2 extern int pfaltq_running; @ 1.8 log @Change "inline" back to "__inline" in .h files -- C99 is still too new, and some apps compile things in C89 mode. C89 keywords stay. As per core@@. @ text @d1 2 a2 2 /* $NetBSD: altq_var.h,v 1.7 2005/12/24 20:10:16 perry Exp $ */ /* $KAME: altq_var.h,v 1.7 2000/12/14 08:12:46 thorpej Exp $ */ d5 1 a5 1 * Copyright (C) 1998-2000 d38 1 d67 12 d82 4 d115 1 d121 1 a124 24 #if defined(__i386__) && !defined(I586_CPU) && !defined(I686_CPU) #ifndef ALTQ_NOPCC #define ALTQ_NOPCC /* TSC is not available, ALTQ_NOPCC needed */ #endif #endif #if defined(__i386__) && !defined(ALTQ_NOPCC) /* for pentium tsc */ #include #define read_machclk() rdtsc() #ifdef __OpenBSD__ static __inline u_int64_t rdtsc(void) { u_int64_t rv; __asm volatile(".byte 0x0f, 0x31" : "=A" (rv)); return (rv); } #endif /* __OpenBSD__ */ #elif defined(__alpha__) && !defined(ALTQ_NOPCC) /* for alpha rpcc */ a126 13 #else /* !i386 && !alpha */ /* emulate 256MHz using microtime() */ #define MACHCLK_SHIFT 8 static __inline u_int64_t read_machclk(void) { struct timeval tv; microtime(&tv); return (((u_int64_t)(tv.tv_sec - boottime.tv_sec) * 1000000 + tv.tv_usec) << MACHCLK_SHIFT); } #endif /* !i386 && !alpha */ a143 3 #if defined(__FreeBSD__) && (__FreeBSD__ < 3) typedef int ioctlcmd_t; #else a144 1 #endif d168 3 d172 1 d178 12 d195 1 a195 1 void (*c_func) __P((void *));/* functiuon to call */ d197 1 a197 2 #define CALLOUT_INIT(c) do { (void)memset((c), 0, sizeof(*(c))); \ } while (/*CONSTCOND*/ 0) d200 1 a200 2 timeout((f),(a),(t)); \ } while (/*CONSTCOND*/ 0) d210 1 a210 1 struct ifnet; struct mbuf; struct flowinfo; d212 49 a260 12 void *altq_lookup __P((char *, int)); int altq_extractflow __P((struct mbuf *, int, struct flowinfo *, u_int32_t)); int acc_add_filter __P((struct acc_classifier *, struct flow_filter *, void *, u_long *)); int acc_delete_filter __P((struct acc_classifier *, u_long)); int acc_discard_filters __P((struct acc_classifier *, void *, int)); void *acc_classify __P((void *, struct mbuf *, int)); u_int8_t read_dsfield __P((struct mbuf *, struct altq_pktattr *)); void write_dsfield __P((struct mbuf *, struct altq_pktattr *, u_int8_t)); void altq_assert __P((const char *, int, const char *)); int tbr_set __P((struct ifaltq *, struct tb_profile *)); int tbr_get __P((struct ifaltq *, struct tb_profile *)); @ 1.8.14.1 log @Sync with head. @ text @d1 2 a2 2 /* $NetBSD: altq_var.h,v 1.10 2006/10/15 13:17:13 peter Exp $ */ /* $KAME: altq_var.h,v 1.18 2005/04/13 03:44:25 suz Exp $ */ d5 1 a5 1 * Copyright (C) 1998-2003 a37 1 #ifdef ALTQ3_CLFIER_COMPAT a65 12 #if (__FreeBSD_version > 500000) #define ACC_LOCK_INIT(ac) mtx_init(&(ac)->acc_mtx, "classifier", MTX_DEF) #define ACC_LOCK_DESTROY(ac) mtx_destroy(&(ac)->acc_mtx) #define ACC_LOCK(ac) mtx_lock(&(ac)->acc_mtx) #define ACC_UNLOCK(ac) mtx_unlock(&(ac)->acc_mtx) #else #define ACC_LOCK_INIT(ac) #define ACC_LOCK_DESTROY(ac) #define ACC_LOCK(ac) #define ACC_UNLOCK(ac) #endif a68 4 #if (__FreeBSD_version > 500000) struct mtx acc_mtx; #endif a97 1 #endif /* ALTQ3_CLFIER_COMPAT */ a102 1 extern int machclk_usepcc; d106 24 d132 13 d162 3 d166 1 a189 3 #if (__FreeBSD_version > 500000) #define CALLOUT_INIT(c) callout_init((c), 0) #else a190 1 #endif a195 12 #elif defined(__OpenBSD__) #include /* callout structure as a wrapper of struct timeout */ struct callout { struct timeout c_to; }; #define CALLOUT_INIT(c) do { (void)memset((c), 0, sizeof(*(c))); } while (/*CONSTCOND*/ 0) #define CALLOUT_RESET(c,t,f,a) do { if (!timeout_initialized(&(c)->c_to)) \ timeout_set(&(c)->c_to, (f), (a)); \ timeout_add(&(c)->c_to, (t)); } while (/*CONSTCOND*/ 0) #define CALLOUT_STOP(c) timeout_del(&(c)->c_to) #define CALLOUT_INITIALIZER { { { NULL }, NULL, NULL, 0, 0 } } d201 1 a201 1 void (*c_func)(void *); /* functiuon to call */ d203 2 a204 1 #define CALLOUT_INIT(c) do { (void)memset((c), 0, sizeof(*(c))); } while (/*CONSTCOND*/ 0) d207 2 a208 1 timeout((f),(a),(t)); } while (/*CONSTCOND*/ 0) d218 14 a231 49 struct ifnet; struct mbuf; struct pf_altq; #ifdef ALTQ3_CLFIER_COMPAT struct flowinfo; #endif void *altq_lookup(char *, int); #ifdef ALTQ3_CLFIER_COMPAT int altq_extractflow(struct mbuf *, int, struct flowinfo *, u_int32_t); int acc_add_filter(struct acc_classifier *, struct flow_filter *, void *, u_long *); int acc_delete_filter(struct acc_classifier *, u_long); int acc_discard_filters(struct acc_classifier *, void *, int); void *acc_classify(void *, struct mbuf *, int); #endif u_int8_t read_dsfield(struct mbuf *, struct altq_pktattr *); void write_dsfield(struct mbuf *, struct altq_pktattr *, u_int8_t); void altq_assert(const char *, int, const char *); int tbr_set(struct ifaltq *, struct tb_profile *); int tbr_get(struct ifaltq *, struct tb_profile *); int altq_pfattach(struct pf_altq *); int altq_pfdetach(struct pf_altq *); int altq_add(struct pf_altq *); int altq_remove(struct pf_altq *); int altq_add_queue(struct pf_altq *); int altq_remove_queue(struct pf_altq *); int altq_getqstats(struct pf_altq *, void *, int *); int cbq_pfattach(struct pf_altq *); int cbq_add_altq(struct pf_altq *); int cbq_remove_altq(struct pf_altq *); int cbq_add_queue(struct pf_altq *); int cbq_remove_queue(struct pf_altq *); int cbq_getqstats(struct pf_altq *, void *, int *); int priq_pfattach(struct pf_altq *); int priq_add_altq(struct pf_altq *); int priq_remove_altq(struct pf_altq *); int priq_add_queue(struct pf_altq *); int priq_remove_queue(struct pf_altq *); int priq_getqstats(struct pf_altq *, void *, int *); int hfsc_pfattach(struct pf_altq *); int hfsc_add_altq(struct pf_altq *); int hfsc_remove_altq(struct pf_altq *); int hfsc_add_queue(struct pf_altq *); int hfsc_remove_queue(struct pf_altq *); int hfsc_getqstats(struct pf_altq *, void *, int *); @ 1.8.16.1 log @sync with head @ text @d1 2 a2 2 /* $NetBSD$ */ /* $KAME: altq_var.h,v 1.18 2005/04/13 03:44:25 suz Exp $ */ d5 1 a5 1 * Copyright (C) 1998-2003 a37 1 #ifdef ALTQ3_CLFIER_COMPAT a65 12 #if (__FreeBSD_version > 500000) #define ACC_LOCK_INIT(ac) mtx_init(&(ac)->acc_mtx, "classifier", MTX_DEF) #define ACC_LOCK_DESTROY(ac) mtx_destroy(&(ac)->acc_mtx) #define ACC_LOCK(ac) mtx_lock(&(ac)->acc_mtx) #define ACC_UNLOCK(ac) mtx_unlock(&(ac)->acc_mtx) #else #define ACC_LOCK_INIT(ac) #define ACC_LOCK_DESTROY(ac) #define ACC_LOCK(ac) #define ACC_UNLOCK(ac) #endif a68 4 #if (__FreeBSD_version > 500000) struct mtx acc_mtx; #endif a97 1 #endif /* ALTQ3_CLFIER_COMPAT */ a102 1 extern int machclk_usepcc; d106 24 d132 13 d162 3 d166 1 a189 3 #if (__FreeBSD_version > 500000) #define CALLOUT_INIT(c) callout_init((c), 0) #else a190 1 #endif a195 12 #elif defined(__OpenBSD__) #include /* callout structure as a wrapper of struct timeout */ struct callout { struct timeout c_to; }; #define CALLOUT_INIT(c) do { (void)memset((c), 0, sizeof(*(c))); } while (/*CONSTCOND*/ 0) #define CALLOUT_RESET(c,t,f,a) do { if (!timeout_initialized(&(c)->c_to)) \ timeout_set(&(c)->c_to, (f), (a)); \ timeout_add(&(c)->c_to, (t)); } while (/*CONSTCOND*/ 0) #define CALLOUT_STOP(c) timeout_del(&(c)->c_to) #define CALLOUT_INITIALIZER { { { NULL }, NULL, NULL, 0, 0 } } d201 1 a201 1 void (*c_func)(void *); /* functiuon to call */ d203 2 a204 1 #define CALLOUT_INIT(c) do { (void)memset((c), 0, sizeof(*(c))); } while (/*CONSTCOND*/ 0) d207 2 a208 1 timeout((f),(a),(t)); } while (/*CONSTCOND*/ 0) d218 14 a231 49 struct ifnet; struct mbuf; struct pf_altq; #ifdef ALTQ3_CLFIER_COMPAT struct flowinfo; #endif void *altq_lookup(char *, int); #ifdef ALTQ3_CLFIER_COMPAT int altq_extractflow(struct mbuf *, int, struct flowinfo *, u_int32_t); int acc_add_filter(struct acc_classifier *, struct flow_filter *, void *, u_long *); int acc_delete_filter(struct acc_classifier *, u_long); int acc_discard_filters(struct acc_classifier *, void *, int); void *acc_classify(void *, struct mbuf *, int); #endif u_int8_t read_dsfield(struct mbuf *, struct altq_pktattr *); void write_dsfield(struct mbuf *, struct altq_pktattr *, u_int8_t); void altq_assert(const char *, int, const char *); int tbr_set(struct ifaltq *, struct tb_profile *); int tbr_get(struct ifaltq *, struct tb_profile *); int altq_pfattach(struct pf_altq *); int altq_pfdetach(struct pf_altq *); int altq_add(struct pf_altq *); int altq_remove(struct pf_altq *); int altq_add_queue(struct pf_altq *); int altq_remove_queue(struct pf_altq *); int altq_getqstats(struct pf_altq *, void *, int *); int cbq_pfattach(struct pf_altq *); int cbq_add_altq(struct pf_altq *); int cbq_remove_altq(struct pf_altq *); int cbq_add_queue(struct pf_altq *); int cbq_remove_queue(struct pf_altq *); int cbq_getqstats(struct pf_altq *, void *, int *); int priq_pfattach(struct pf_altq *); int priq_add_altq(struct pf_altq *); int priq_remove_altq(struct pf_altq *); int priq_add_queue(struct pf_altq *); int priq_remove_queue(struct pf_altq *); int priq_getqstats(struct pf_altq *, void *, int *); int hfsc_pfattach(struct pf_altq *); int hfsc_add_altq(struct pf_altq *); int hfsc_remove_altq(struct pf_altq *); int hfsc_add_queue(struct pf_altq *); int hfsc_remove_queue(struct pf_altq *); int hfsc_getqstats(struct pf_altq *, void *, int *); @ 1.8.6.1 log @Sync with KAME. @ text @d1 2 a2 2 /* $NetBSD$ */ /* $KAME: altq_var.h,v 1.18 2005/04/13 03:44:25 suz Exp $ */ d5 1 a5 1 * Copyright (C) 1998-2003 a37 1 #ifdef ALTQ3_CLFIER_COMPAT a65 12 #if (__FreeBSD_version > 500000) #define ACC_LOCK_INIT(ac) mtx_init(&(ac)->acc_mtx, "classifier", MTX_DEF) #define ACC_LOCK_DESTROY(ac) mtx_destroy(&(ac)->acc_mtx) #define ACC_LOCK(ac) mtx_lock(&(ac)->acc_mtx) #define ACC_UNLOCK(ac) mtx_unlock(&(ac)->acc_mtx) #else #define ACC_LOCK_INIT(ac) #define ACC_LOCK_DESTROY(ac) #define ACC_LOCK(ac) #define ACC_UNLOCK(ac) #endif a68 4 #if (__FreeBSD_version > 500000) struct mtx acc_mtx; #endif a97 1 #endif /* ALTQ3_CLFIER_COMPAT */ a102 1 extern int machclk_usepcc; d106 24 d132 13 d162 3 d166 1 a189 3 #if (__FreeBSD_version > 500000) #define CALLOUT_INIT(c) callout_init((c), 0) #else a190 1 #endif a195 12 #elif defined(__OpenBSD__) #include /* callout structure as a wrapper of struct timeout */ struct callout { struct timeout c_to; }; #define CALLOUT_INIT(c) do { (void)memset((c), 0, sizeof(*(c))); } while (/*CONSTCOND*/ 0) #define CALLOUT_RESET(c,t,f,a) do { if (!timeout_initialized(&(c)->c_to)) \ timeout_set(&(c)->c_to, (f), (a)); \ timeout_add(&(c)->c_to, (t)); } while (/*CONSTCOND*/ 0) #define CALLOUT_STOP(c) timeout_del(&(c)->c_to) #define CALLOUT_INITIALIZER { { { NULL }, NULL, NULL, 0, 0 } } d201 1 a201 1 void (*c_func)(void *); /* functiuon to call */ d203 2 a204 1 #define CALLOUT_INIT(c) do { (void)memset((c), 0, sizeof(*(c))); } while (/*CONSTCOND*/ 0) d207 2 a208 1 timeout((f),(a),(t)); } while (/*CONSTCOND*/ 0) d218 1 a218 1 extern int pfaltq_running; d220 12 a231 49 struct ifnet; struct mbuf; struct pf_altq; #ifdef ALTQ3_CLFIER_COMPAT struct flowinfo; #endif void *altq_lookup(char *, int); #ifdef ALTQ3_CLFIER_COMPAT int altq_extractflow(struct mbuf *, int, struct flowinfo *, u_int32_t); int acc_add_filter(struct acc_classifier *, struct flow_filter *, void *, u_long *); int acc_delete_filter(struct acc_classifier *, u_long); int acc_discard_filters(struct acc_classifier *, void *, int); void *acc_classify(void *, struct mbuf *, int); #endif u_int8_t read_dsfield(struct mbuf *, struct altq_pktattr *); void write_dsfield(struct mbuf *, struct altq_pktattr *, u_int8_t); void altq_assert(const char *, int, const char *); int tbr_set(struct ifaltq *, struct tb_profile *); int tbr_get(struct ifaltq *, struct tb_profile *); int altq_pfattach(struct pf_altq *); int altq_pfdetach(struct pf_altq *); int altq_add(struct pf_altq *); int altq_remove(struct pf_altq *); int altq_add_queue(struct pf_altq *); int altq_remove_queue(struct pf_altq *); int altq_getqstats(struct pf_altq *, void *, int *); int cbq_pfattach(struct pf_altq *); int cbq_add_altq(struct pf_altq *); int cbq_remove_altq(struct pf_altq *); int cbq_add_queue(struct pf_altq *); int cbq_remove_queue(struct pf_altq *); int cbq_getqstats(struct pf_altq *, void *, int *); int priq_pfattach(struct pf_altq *); int priq_add_altq(struct pf_altq *); int priq_remove_altq(struct pf_altq *); int priq_add_queue(struct pf_altq *); int priq_remove_queue(struct pf_altq *); int priq_getqstats(struct pf_altq *, void *, int *); int hfsc_pfattach(struct pf_altq *); int hfsc_add_altq(struct pf_altq *); int hfsc_remove_altq(struct pf_altq *); int hfsc_add_queue(struct pf_altq *); int hfsc_remove_queue(struct pf_altq *); int hfsc_getqstats(struct pf_altq *, void *, int *); @ 1.7 log @Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete. @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.6 2005/12/11 12:16:03 christos Exp $ */ d119 1 a119 1 static inline u_int64_t d135 1 a135 1 static inline u_int64_t @ 1.7.4.1 log @sync with head @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.8 2006/02/16 20:17:12 perry Exp $ */ d119 1 a119 1 static __inline u_int64_t d135 1 a135 1 static __inline u_int64_t @ 1.7.6.1 log @Sync with head. @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.8 2006/02/16 20:17:12 perry Exp $ */ d119 1 a119 1 static __inline u_int64_t d135 1 a135 1 static __inline u_int64_t @ 1.7.2.1 log @sync with head. @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.7 2005/12/24 20:10:16 perry Exp $ */ d119 1 a119 1 static __inline u_int64_t d135 1 a135 1 static __inline u_int64_t @ 1.6 log @merge ktrace-lwp. @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.4.6.3 2004/09/21 13:11:19 skrll Exp $ */ d119 1 a119 1 static __inline u_int64_t d123 1 a123 1 __asm __volatile(".byte 0x0f, 0x31" : "=A" (rv)); d135 1 a135 1 static __inline u_int64_t @ 1.5 log @- kill bzero/bcopy - defopt stats and settings, removing their definitions from the files - make code compile by eliminating multicharacter constants!?! and rearranging variable declarations so they are defined before used!?! - help gcc with uninitialized variables @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.4 2002/11/02 07:17:31 perry Exp $ */ @ 1.5.16.1 log @sync with head. @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.5 2003/11/09 22:11:12 christos Exp $ */ d123 1 a123 1 __asm volatile(".byte 0x0f, 0x31" : "=A" (rv)); @ 1.5.16.2 log @sync with head. @ text @d1 2 a2 2 /* $NetBSD$ */ /* $KAME: altq_var.h,v 1.18 2005/04/13 03:44:25 suz Exp $ */ d5 1 a5 1 * Copyright (C) 1998-2003 a37 1 #ifdef ALTQ3_CLFIER_COMPAT a65 12 #if (__FreeBSD_version > 500000) #define ACC_LOCK_INIT(ac) mtx_init(&(ac)->acc_mtx, "classifier", MTX_DEF) #define ACC_LOCK_DESTROY(ac) mtx_destroy(&(ac)->acc_mtx) #define ACC_LOCK(ac) mtx_lock(&(ac)->acc_mtx) #define ACC_UNLOCK(ac) mtx_unlock(&(ac)->acc_mtx) #else #define ACC_LOCK_INIT(ac) #define ACC_LOCK_DESTROY(ac) #define ACC_LOCK(ac) #define ACC_UNLOCK(ac) #endif a68 4 #if (__FreeBSD_version > 500000) struct mtx acc_mtx; #endif a97 1 #endif /* ALTQ3_CLFIER_COMPAT */ a102 1 extern int machclk_usepcc; d106 24 d132 13 d162 3 d166 1 a189 3 #if (__FreeBSD_version > 500000) #define CALLOUT_INIT(c) callout_init((c), 0) #else a190 1 #endif a195 12 #elif defined(__OpenBSD__) #include /* callout structure as a wrapper of struct timeout */ struct callout { struct timeout c_to; }; #define CALLOUT_INIT(c) do { (void)memset((c), 0, sizeof(*(c))); } while (/*CONSTCOND*/ 0) #define CALLOUT_RESET(c,t,f,a) do { if (!timeout_initialized(&(c)->c_to)) \ timeout_set(&(c)->c_to, (f), (a)); \ timeout_add(&(c)->c_to, (t)); } while (/*CONSTCOND*/ 0) #define CALLOUT_STOP(c) timeout_del(&(c)->c_to) #define CALLOUT_INITIALIZER { { { NULL }, NULL, NULL, 0, 0 } } d201 1 a201 1 void (*c_func)(void *); /* functiuon to call */ d203 2 a204 1 #define CALLOUT_INIT(c) do { (void)memset((c), 0, sizeof(*(c))); } while (/*CONSTCOND*/ 0) d207 2 a208 1 timeout((f),(a),(t)); } while (/*CONSTCOND*/ 0) d218 14 a231 49 struct ifnet; struct mbuf; struct pf_altq; #ifdef ALTQ3_CLFIER_COMPAT struct flowinfo; #endif void *altq_lookup(char *, int); #ifdef ALTQ3_CLFIER_COMPAT int altq_extractflow(struct mbuf *, int, struct flowinfo *, u_int32_t); int acc_add_filter(struct acc_classifier *, struct flow_filter *, void *, u_long *); int acc_delete_filter(struct acc_classifier *, u_long); int acc_discard_filters(struct acc_classifier *, void *, int); void *acc_classify(void *, struct mbuf *, int); #endif u_int8_t read_dsfield(struct mbuf *, struct altq_pktattr *); void write_dsfield(struct mbuf *, struct altq_pktattr *, u_int8_t); void altq_assert(const char *, int, const char *); int tbr_set(struct ifaltq *, struct tb_profile *); int tbr_get(struct ifaltq *, struct tb_profile *); int altq_pfattach(struct pf_altq *); int altq_pfdetach(struct pf_altq *); int altq_add(struct pf_altq *); int altq_remove(struct pf_altq *); int altq_add_queue(struct pf_altq *); int altq_remove_queue(struct pf_altq *); int altq_getqstats(struct pf_altq *, void *, int *); int cbq_pfattach(struct pf_altq *); int cbq_add_altq(struct pf_altq *); int cbq_remove_altq(struct pf_altq *); int cbq_add_queue(struct pf_altq *); int cbq_remove_queue(struct pf_altq *); int cbq_getqstats(struct pf_altq *, void *, int *); int priq_pfattach(struct pf_altq *); int priq_add_altq(struct pf_altq *); int priq_remove_altq(struct pf_altq *); int priq_add_queue(struct pf_altq *); int priq_remove_queue(struct pf_altq *); int priq_getqstats(struct pf_altq *, void *, int *); int hfsc_pfattach(struct pf_altq *); int hfsc_add_altq(struct pf_altq *); int hfsc_remove_altq(struct pf_altq *); int hfsc_add_queue(struct pf_altq *); int hfsc_remove_queue(struct pf_altq *); int hfsc_getqstats(struct pf_altq *, void *, int *); @ 1.5.16.3 log @sync with head. @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.5.16.2 2006/12/30 20:45:17 yamt Exp $ */ d168 1 a168 1 #if (__FreeBSD_version > 500000) || defined(__NetBSD__) @ 1.4 log @/*CONTCOND*/ while (0)'ed macros @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.3 2002/05/31 06:52:00 itojun Exp $ */ d203 2 a204 1 #define CALLOUT_INIT(c) do { bzero((c), sizeof(*(c))); } while (/*CONSTCOND*/ 0) d207 2 a208 1 timeout((f),(a),(t)); } while (/*CONSTCOND*/ 0) @ 1.4.6.1 log @Sync with HEAD @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.5 2003/11/09 22:11:12 christos Exp $ */ d203 1 a203 2 #define CALLOUT_INIT(c) do { (void)memset((c), 0, sizeof(*(c))); \ } while (/*CONSTCOND*/ 0) d206 1 a206 2 timeout((f),(a),(t)); \ } while (/*CONSTCOND*/ 0) @ 1.4.6.2 log @Sync with HEAD. @ text @@ 1.4.6.3 log @Fix the sync with head I botched. @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.4.6.1 2004/08/03 10:30:47 skrll Exp $ */ @ 1.3 log @define ALTQ_NOPCC if i386 and !I586_CPU and !I686_CPU. otherwise, kernel fails to compile. report by "Federico G. Schwindt" @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.2 2000/12/14 08:49:51 thorpej Exp $ */ d203 1 a203 1 #define CALLOUT_INIT(c) do { bzero((c), sizeof(*(c))); } while (0) d206 1 a206 1 timeout((f),(a),(t)); } while (0) @ 1.2 log @Add NetBSD RCS IDs. @ text @d1 1 a1 1 /* $NetBSD$ */ d106 6 @ 1.2.2.1 log @file altq_var.h was added on branch thorpej_scsipi on 2001-01-05 17:39:38 +0000 @ text @d1 226 @ 1.2.2.2 log @Sync with HEAD @ text @a0 226 /* $NetBSD: altq_var.h,v 1.2.2.1 2001/01/05 17:39:38 bouyer Exp $ */ /* $KAME: altq_var.h,v 1.7 2000/12/14 08:12:46 thorpej Exp $ */ /* * Copyright (C) 1998-2000 * Sony Computer Science Laboratories Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY SONY CSL AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL SONY CSL OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef _ALTQ_ALTQ_VAR_H_ #define _ALTQ_ALTQ_VAR_H_ #ifdef _KERNEL #include #include #include /* * filter structure for altq common classifier */ struct acc_filter { LIST_ENTRY(acc_filter) f_chain; void *f_class; /* pointer to the class */ u_long f_handle; /* filter id */ u_int32_t f_fbmask; /* filter bitmask */ struct flow_filter f_filter; /* filter value */ }; /* * XXX ACC_FILTER_TABLESIZE can't be larger than 2048 unless we fix * the handle assignment. */ #define ACC_FILTER_TABLESIZE (256+1) #define ACC_FILTER_MASK (ACC_FILTER_TABLESIZE - 2) #define ACC_WILDCARD_INDEX (ACC_FILTER_TABLESIZE - 1) #ifdef __GNUC__ #define ACC_GET_HASH_INDEX(addr) \ ({int x = (addr) + ((addr) >> 16); (x + (x >> 8)) & ACC_FILTER_MASK;}) #else #define ACC_GET_HASH_INDEX(addr) \ (((addr) + ((addr) >> 8) + ((addr) >> 16) + ((addr) >> 24)) \ & ACC_FILTER_MASK) #endif #define ACC_GET_HINDEX(handle) ((handle) >> 20) struct acc_classifier { u_int32_t acc_fbmask; LIST_HEAD(filt, acc_filter) acc_filters[ACC_FILTER_TABLESIZE]; }; /* * flowinfo mask bits used by classifier */ /* for ipv4 */ #define FIMB4_PROTO 0x0001 #define FIMB4_TOS 0x0002 #define FIMB4_DADDR 0x0004 #define FIMB4_SADDR 0x0008 #define FIMB4_DPORT 0x0010 #define FIMB4_SPORT 0x0020 #define FIMB4_GPI 0x0040 #define FIMB4_ALL 0x007f /* for ipv6 */ #define FIMB6_PROTO 0x0100 #define FIMB6_TCLASS 0x0200 #define FIMB6_DADDR 0x0400 #define FIMB6_SADDR 0x0800 #define FIMB6_DPORT 0x1000 #define FIMB6_SPORT 0x2000 #define FIMB6_GPI 0x4000 #define FIMB6_FLABEL 0x8000 #define FIMB6_ALL 0xff00 #define FIMB_ALL (FIMB4_ALL|FIMB6_ALL) #define FIMB4_PORTS (FIMB4_DPORT|FIMB4_SPORT|FIMB4_GPI) #define FIMB6_PORTS (FIMB6_DPORT|FIMB6_SPORT|FIMB6_GPI) /* * machine dependent clock * a 64bit high resolution time counter. */ extern u_int32_t machclk_freq; extern u_int32_t machclk_per_tick; extern void init_machclk(void); #if defined(__i386__) && !defined(ALTQ_NOPCC) /* for pentium tsc */ #include #define read_machclk() rdtsc() #ifdef __OpenBSD__ static __inline u_int64_t rdtsc(void) { u_int64_t rv; __asm __volatile(".byte 0x0f, 0x31" : "=A" (rv)); return (rv); } #endif /* __OpenBSD__ */ #elif defined(__alpha__) && !defined(ALTQ_NOPCC) /* for alpha rpcc */ extern u_int64_t read_machclk(void); #else /* !i386 && !alpha */ /* emulate 256MHz using microtime() */ #define MACHCLK_SHIFT 8 static __inline u_int64_t read_machclk(void) { struct timeval tv; microtime(&tv); return (((u_int64_t)(tv.tv_sec - boottime.tv_sec) * 1000000 + tv.tv_usec) << MACHCLK_SHIFT); } #endif /* !i386 && !alpha */ /* * debug support */ #ifdef ALTQ_DEBUG #ifdef __STDC__ #define ASSERT(e) ((e) ? (void)0 : altq_assert(__FILE__, __LINE__, #e)) #else /* PCC */ #define ASSERT(e) ((e) ? (void)0 : altq_assert(__FILE__, __LINE__, "e")) #endif #else #define ASSERT(e) ((void)0) #endif /* * misc stuff for compatibility */ /* ioctl cmd type */ #if defined(__FreeBSD__) && (__FreeBSD__ < 3) typedef int ioctlcmd_t; #else typedef u_long ioctlcmd_t; #endif /* * queue macros: * the interface of TAILQ_LAST macro changed after the introduction * of softupdate. redefine it here to make it work with pre-2.2.7. */ #undef TAILQ_LAST #define TAILQ_LAST(head, headname) \ (*(((struct headname *)((head)->tqh_last))->tqh_last)) #ifndef TAILQ_EMPTY #define TAILQ_EMPTY(head) ((head)->tqh_first == NULL) #endif #ifndef TAILQ_FOREACH #define TAILQ_FOREACH(var, head, field) \ for (var = TAILQ_FIRST(head); var; var = TAILQ_NEXT(var, field)) #endif /* macro for timeout/untimeout */ #if (__FreeBSD_version > 300000) || defined(__NetBSD__) /* use callout */ #include #define CALLOUT_INIT(c) callout_init((c)) #define CALLOUT_RESET(c,t,f,a) callout_reset((c),(t),(f),(a)) #define CALLOUT_STOP(c) callout_stop((c)) #ifndef CALLOUT_INITIALIZER #define CALLOUT_INITIALIZER { { { NULL } }, 0, NULL, NULL, 0 } #endif #else /* use old-style timeout/untimeout */ /* dummy callout structure */ struct callout { void *c_arg; /* function argument */ void (*c_func) __P((void *));/* functiuon to call */ }; #define CALLOUT_INIT(c) do { bzero((c), sizeof(*(c))); } while (0) #define CALLOUT_RESET(c,t,f,a) do { (c)->c_arg = (a); \ (c)->c_func = (f); \ timeout((f),(a),(t)); } while (0) #define CALLOUT_STOP(c) untimeout((c)->c_func,(c)->c_arg) #define CALLOUT_INITIALIZER { NULL, NULL } #endif #if !defined(__FreeBSD__) typedef void (timeout_t)(void *); #endif #define m_pktlen(m) ((m)->m_pkthdr.len) struct ifnet; struct mbuf; struct flowinfo; void *altq_lookup __P((char *, int)); int altq_extractflow __P((struct mbuf *, int, struct flowinfo *, u_int32_t)); int acc_add_filter __P((struct acc_classifier *, struct flow_filter *, void *, u_long *)); int acc_delete_filter __P((struct acc_classifier *, u_long)); int acc_discard_filters __P((struct acc_classifier *, void *, int)); void *acc_classify __P((void *, struct mbuf *, int)); u_int8_t read_dsfield __P((struct mbuf *, struct altq_pktattr *)); void write_dsfield __P((struct mbuf *, struct altq_pktattr *, u_int8_t)); void altq_assert __P((const char *, int, const char *)); int tbr_set __P((struct ifaltq *, struct tb_profile *)); int tbr_get __P((struct ifaltq *, struct tb_profile *)); #endif /* _KERNEL */ #endif /* _ALTQ_ALTQ_VAR_H_ */ @ 1.2.6.1 log @catch up with -current on kqueue branch @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.2 2000/12/14 08:49:51 thorpej Exp $ */ a105 6 #if defined(__i386__) && !defined(I586_CPU) && !defined(I686_CPU) #ifndef ALTQ_NOPCC #define ALTQ_NOPCC /* TSC is not available, ALTQ_NOPCC needed */ #endif #endif @ 1.2.18.1 log @catch up with -current. @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.3 2002/05/31 06:52:00 itojun Exp $ */ a105 6 #if defined(__i386__) && !defined(I586_CPU) && !defined(I686_CPU) #ifndef ALTQ_NOPCC #define ALTQ_NOPCC /* TSC is not available, ALTQ_NOPCC needed */ #endif #endif @ 1.2.4.1 log @Catch up to -current. @ text @d1 1 a1 1 /* $NetBSD: altq_var.h,v 1.2 2000/12/14 08:49:51 thorpej Exp $ */ a105 6 #if defined(__i386__) && !defined(I586_CPU) && !defined(I686_CPU) #ifndef ALTQ_NOPCC #define ALTQ_NOPCC /* TSC is not available, ALTQ_NOPCC needed */ #endif #endif @ 1.2.4.2 log @Catch up to -current @ text @d1 1 a1 1 /* $NetBSD$ */ d203 1 a203 1 #define CALLOUT_INIT(c) do { bzero((c), sizeof(*(c))); } while (/*CONSTCOND*/ 0) d206 1 a206 1 timeout((f),(a),(t)); } while (/*CONSTCOND*/ 0) @ 1.1 log @Initial revision @ text @d1 1 @ 1.1.1.1 log @Import ALTQ from KAME. @ text @@