FreeBSD manual
download PDF document: hardclock.9.pdf
HARDCLOCK(9) FreeBSD Kernel Developer's Manual HARDCLOCK(9)
NAME
hardclock - real-time timer
SYNOPSIS
void
hardclock(int cnt, int usermode);
DESCRIPTION
The hardclock() function is called periodically based on pending work.
The rate ranges from hz times per second on a very busy system, to twice
a second on an idle system. The cnt argument reports an estimate of the
number of ticks since the last call. Over long timescales, the average
sum of cnt over one second is hz. See hz(9) for important details over
shorter time scales. The usermode argument is non-zero when hardclock()
is called from an context that interrupted usermode execution.
hardclock() may perform different tasks such as:
o Run the current process's virtual and profile time (decrease
the corresponding timers, if they are activated, and generate
SIGVTALRM or SIGPROF, respectively).
o Increment the time-of-day, taking care of any ntpd(8) or
adjtime(2) induced changes and leap seconds, as well as any
necessary compensations to keep in sync with PPS signals or
external clocks, if supported by the kernel.
o Schedule softclock interrupts (swi(9)) processing.
o Collect hwpmc(4) statistics.
o Do device polling, when enabled (see polling(4)).
o Implement software watchdog(9) processing.
o Enqueue epoch(9) processing.
SEE ALSO
adjtime(2), ntp_adjtime(2), signal(3), hwpmc(4), polling(4), ntpd(8),
epoch(9), eventtimers(9), hz(9), swi(9), watchdog(9)
FreeBSD 14.0-RELEASE-p11 February 27, 2023 FreeBSD 14.0-RELEASE-p11