Index: share/man/man9/Makefile =================================================================== --- share/man/man9/Makefile +++ share/man/man9/Makefile @@ -159,10 +159,12 @@ g_provider_by_name.9 \ groupmember.9 \ g_wither_geom.9 \ + hardclock.9 \ hash.9 \ hashinit.9 \ hexdump.9 \ hhook.9 \ + hz.9 \ ieee80211.9 \ ieee80211_amrr.9 \ ieee80211_beacon.9 \ @@ -1127,6 +1129,10 @@ hhook.9 hhook_run_hooks.9 \ hhook.9 HHOOKS_RUN_IF.9 \ hhook.9 HHOOKS_RUN_LOOKUP_IF.9 +MLINKS+=hz.9 profhz.9 \ + hz.9 stathz.9 \ + hz.9 tick.9 \ + hz.9 tickadj.9 MLINKS+=ieee80211.9 ieee80211_ifattach.9 \ ieee80211.9 ieee80211_ifdetach.9 MLINKS+=ieee80211_amrr.9 ieee80211_amrr_choose.9 \ Index: share/man/man9/hardclock.9 =================================================================== --- /dev/null +++ share/man/man9/hardclock.9 @@ -0,0 +1,100 @@ +.\" $NetBSD: hardclock.9,v 1.3 2010/03/25 15:17:38 jruoho Exp $ +.\" +.\" Copyright (c) 2001 The NetBSD Foundation, Inc. +.\" All rights reserved. +.\" +.\" This code is derived from software contributed to The NetBSD Foundation +.\" by Thomas Klausner. +.\" +.\" 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 THE NETBSD FOUNDATION, INC. 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 THE FOUNDATION 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. +.\" +.Dd March 25, 2010 +.Dt HARDCLOCK 9 +.Os +.Sh NAME +.Nm hardclock +.Nd real-time timer +.Sh SYNOPSIS +.Ft void +.Fn hardclock "int cnt" "int fake" +.Sh DESCRIPTION +The +.Fn hardclock +function is called +.Xr hz 9 +times per second. +It implements the real-time system clock. +The argument +.Va cnt +is the estimated number of ticks since the last call to +.Fn hardclock . +The argument +.Va usermode +is none-zero when +.Fn hardclock +is called from a user-mode context. +.Pp +.Fn hardclock +may perform different tasks such as: +.Bl -bullet -offset indent +.It +Run the current process's virtual and profile time (decrease the +corresponding timers, if they are activated, and generate +.Li SIGVTALRM +or +.Li SIGPROF , +respectively). +.It +Increment the time-of-day, taking care of any +.Xr ntpd 8 +or +.Xr adjtime 2 +induced changes and leap seconds, as well as any necessary +compensations to keep in sync with PPS signals or external clocks, if +support for this is in the kernel (see +.Xr options 4 ) . +.It +Schedule softclock interrupts ( +.Xr swi 9 ) +processing. +.It +Collect +.Xr hwpmc 4 +statistics. +.It +Do device polling, when enabled. +.It +Implement software +.Xr watchdog 9 +processing. +.It +Enqueue +.Xr epoch 9 +processing. +.El +.Sh SEE ALSO +.Xr adjtime 2 , +.Xr ntp_adjtime 2 , +.Xr signal 3 , +.Xr ntpd 8 , +.Xr callout 9 , +.Xr hz 9 Index: share/man/man9/hz.9 =================================================================== --- /dev/null +++ share/man/man9/hz.9 @@ -0,0 +1,110 @@ +.\" $NetBSD: hz.9,v 1.9 2010/03/26 19:40:41 wiz Exp $ +.\" +.\" Copyright (c) 2001 The NetBSD Foundation, Inc. +.\" All rights reserved. +.\" +.\" This code is derived from software contributed to The NetBSD Foundation +.\" by Thomas Klausner. +.\" +.\" 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 THE NETBSD FOUNDATION, INC. 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 THE FOUNDATION 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. +.\" +.Dd June 18, 2021 +.Dt HZ 9 +.Os +.Sh NAME +.Nm hz , +.Nm tick , +.Nm stathz , +.Nm profhz +.Nd system time model +.Sh SYNOPSIS +.In sys/kernel.h +.Pp +.Vt extern int hz; +.Vt extern int tick; +.Vt extern int stathz; +.Vt extern int profhz; +.Sh DESCRIPTION +The essential clock handling routines in +.Nx +are written to operate with two timers that run independently of each other. +The main clock, running +.Va hz +times per second, is used to keep track of real time. +.Pp +In another words, +.Va hz +specifies the number of times the +.Xr hardclock 9 +timer ticks per second. +Normally +.Xr hardclock 9 +increments time by +.Va tick +each time it is called. +.Pp +The second timer is used to gather timing statistics. +It also handles kernel and user profiling. +If the second timer is programmable, +it is randomized to avoid aliasing between the two clocks. +The mean frequency of the second timer is +.Va stathz . +If a separate clock is not available, +.Va stathz +is set to +.Va hz . +.Pp +If profiling is enabled, the clock normally used to drive +.Va stathz +may be run at a higher rate +.Va profhz , +which is required to be a multiple of +.Va stathz . +This will give higher resolution profiling information. +.Pp +These system variables are also available as +.Em struct clockinfo +from +.Xr sysctl 3 +and +.Sy kern.clockrate +from +.Xr sysctl 8 . +The +.Va hz +is hardware-dependent; it can be overridden +(if the machine dependent code supports this) by defining +.Dv HZ +in the kernel configuration file (see +.Xr options 4 ) +or +.Sy kern.hz +system tunable. +The current defafult is 1000Hz for a tick of 1ms for real hardware. +For virtual machine guests, the default is 100Hz for a tick of 10ms. +Only override the default value if you really know what you are doing. +.Sh SEE ALSO +.Xr adjtime 2 , +.Xr callout 9 , +.Xr hardclock 9 , +.Xr microtime 9 , +.Xr time_second 9