summaryrefslogtreecommitdiffstats
path: root/share/man/man9
diff options
context:
space:
mode:
authorian <ian@FreeBSD.org>2014-05-17 20:10:12 +0000
committerian <ian@FreeBSD.org>2014-05-17 20:10:12 +0000
commit9f4d42e0d5ac9fd53ce7499b7ba78d5c2f392dcf (patch)
tree66ee73217081a18f0aebac5e3c89d11ff179ea73 /share/man/man9
parentaa723a2c5a49290b58ee56c47638f702d3422410 (diff)
downloadFreeBSD-src-9f4d42e0d5ac9fd53ce7499b7ba78d5c2f392dcf.zip
FreeBSD-src-9f4d42e0d5ac9fd53ce7499b7ba78d5c2f392dcf.tar.gz
MFC 264019, 264041, 264048, 264049, 264050, 264051
Add support for event timers whose clock frequency can change while running. Apparently all ARM configs build kern_et.c, but only a few of them also build kern_clocksource.c, un-break the build by not referencing functions in kern_clocksource if NO_EVENTTIMERS is defined. Add variable-frequency support to the arm mpcore eventtimer driver. mpcore_timer: Disable the timer and clear any pending bit, then setup the new counter register values, then restart the timer. Also re-nest the parens properly for casting the result of converting time and frequency to a count.
Diffstat (limited to 'share/man/man9')
-rw-r--r--share/man/man9/eventtimers.919
1 files changed, 18 insertions, 1 deletions
diff --git a/share/man/man9/eventtimers.9 b/share/man/man9/eventtimers.9
index b43bc49..0c28d76 100644
--- a/share/man/man9/eventtimers.9
+++ b/share/man/man9/eventtimers.9
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 25, 2013
+.Dd April 2, 2014
.Dt EVENTTIMERS 9
.Os
.Sh NAME
@@ -68,6 +68,8 @@ struct eventtimer {
.Fn et_register "struct eventtimer *et"
.Ft int
.Fn et_deregister "struct eventtimer *et"
+.Ft void
+.Fn et_change_frequency "struct eventtimer *et" "uint64_t newfreq"
.Fn ET_LOCK
.Fn ET_UNLOCK
.Ft struct eventtimer *
@@ -176,6 +178,21 @@ methods control timers associated with the current CPU.
.Pp
Driver may deregister its functionality by calling
.Fn et_deregister .
+.Pp
+If the frequency of the clock hardware can change while it is
+running (for example, during power-saving modes), the driver must call
+.Fn et_change_frequency
+on each change.
+If the given event timer is the active timer,
+.Fn et_change_frequency
+stops the timer on all CPUs, updates
+.Va et->frequency ,
+then restarts the timer on all CPUs so that all
+current events are rescheduled using the new frequency.
+If the given timer is not currently active,
+.Fn et_change_frequency
+simply updates
+.Va et->frequency .
.Sh CONSUMER API
.Fn et_find
allows consumer to find available event timer, optionally matching specific
OpenPOWER on IntegriCloud