Home | History | Annotate | Line # | Download | only in man9
 $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 March 25, 2010 .Dt HZ 9 .Os .Sh NAME .Nm hz , .Nm tick , .Nm tickadj , .Nm stathz , .Nm profhz .Nd system time model .Sh SYNOPSIS n sys/kernel.h

p .Vt extern int hz; .Vt extern int tick; .Vt extern int tickadj; .Vt extern int stathz; .Vt extern int profhz; XXX: .Vt extern int schedhz; ?
.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.

p 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. If the system clock has drifted, .Xr adjtime 2 may be used to skew this increment based on the rate of .Va tickadj .

p 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 .

p 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.

p 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 ) . 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