xref: /dflybsd-src/share/man/man9/systimer.9 (revision fab3eb7d9fb24bc0de19298ded6985aed7f4152c)
192750d28SVenkatesh Srinivas.\"
292750d28SVenkatesh Srinivas.\" Copyright (c) 2010, The DragonFly Project.
392750d28SVenkatesh Srinivas.\"
492750d28SVenkatesh Srinivas.\" This software is derived from software contributed to the DragonFly Project
592750d28SVenkatesh Srinivas.\" by Venkatesh Srinivas <me@endeavour.zapto.org>.
692750d28SVenkatesh Srinivas.\"
792750d28SVenkatesh Srinivas.\" Permission to use, copy, modify, or distribute this software for any
892750d28SVenkatesh Srinivas.\" purpose with or without fee is hereby granted, provided that the above
992750d28SVenkatesh Srinivas.\" copyright notice and this permission notice appear in all copies.
1092750d28SVenkatesh Srinivas.\"
1192750d28SVenkatesh Srinivas.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1292750d28SVenkatesh Srinivas.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1392750d28SVenkatesh Srinivas.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1492750d28SVenkatesh Srinivas.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR OTHER DAMAGES
1592750d28SVenkatesh Srinivas.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN
1692750d28SVenkatesh Srinivas.\" ACTION OF CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF
1792750d28SVenkatesh Srinivas.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1892750d28SVenkatesh Srinivas.\"
19*fab3eb7dSSascha Wildner.Dd July 3, 2020
2092750d28SVenkatesh Srinivas.Dt SYSTIMER 9
21ee147bcbSThomas Nikolajsen.Os
2292750d28SVenkatesh Srinivas.Sh NAME
2392750d28SVenkatesh Srinivas.Nm systimer_init_periodic ,
2492750d28SVenkatesh Srinivas.Nm systimer_init_periodic_nq ,
2592750d28SVenkatesh Srinivas.Nm systimer_adjust_periodic ,
2692750d28SVenkatesh Srinivas.Nm systimer_init_oneshot
2792750d28SVenkatesh Srinivas.Nd periodic callbacks
2892750d28SVenkatesh Srinivas.Sh SYNOPSIS
2992750d28SVenkatesh Srinivas.In sys/systimer.h
3092750d28SVenkatesh Srinivas.Ft void
31*fab3eb7dSSascha Wildner.Fn systimer_init_periodic "systimer_t info" "systimer_func_t func" "void *data" "int64_t freq"
3292750d28SVenkatesh Srinivas.Ft void
33*fab3eb7dSSascha Wildner.Fn systimer_init_periodic_nq "systimer_t info" "systimer_func_t func" "void *data" "int64_t freq"
3492750d28SVenkatesh Srinivas.Ft void
35*fab3eb7dSSascha Wildner.Fn systimer_adjust_periodic "systimer_t info" "int64_t freq"
3692750d28SVenkatesh Srinivas.Ft void
37*fab3eb7dSSascha Wildner.Fn systimer_init_oneshot "systimer_t info" "systimer_func_t func" "void *data" "int64_t us"
3892750d28SVenkatesh Srinivas.Sh DESCRIPTION
39ee147bcbSThomas NikolajsenSystimers invoke callbacks at either fixed frequencies or after time delays.
40ee147bcbSThomas NikolajsenThe callbacks are invoked in an interrupt thread and should only be used
41ee147bcbSThomas Nikolajsenfor limited work.
4292750d28SVenkatesh Srinivas.Pp
4392750d28SVenkatesh SrinivasThe
4492750d28SVenkatesh Srinivas.Fn systimer_init_periodic
4592750d28SVenkatesh Srinivasfunction initializes a systimer callback function to be called at frequency
46*fab3eb7dSSascha Wildner.Fa freq .
4792750d28SVenkatesh SrinivasThe
4892750d28SVenkatesh Srinivas.Fa info
4992750d28SVenkatesh Srinivasargument is an allocated systimer structure; the
5092750d28SVenkatesh Srinivas.Fa func
5192750d28SVenkatesh Srinivasargument is the function to call, with argument
5292750d28SVenkatesh Srinivas.Fa data .
5392750d28SVenkatesh Srinivas.Pp
5492750d28SVenkatesh SrinivasThe
5592750d28SVenkatesh Srinivas.Fn systimer_init_periodic_nq
5692750d28SVenkatesh Srinivasfunction initializes a systimer callback function to be called at a frequency
57*fab3eb7dSSascha Wildner.Fa freq .
5892750d28SVenkatesh SrinivasUnlike the
5992750d28SVenkatesh Srinivas.Fn systimer_init_periodic
6092750d28SVenkatesh Srinivasfunction, the
6192750d28SVenkatesh Srinivas.Fn systimer_init_periodic_nq
6292750d28SVenkatesh Srinivasfunction's callback is only called once at a given time, even if delays caused
6330e3ae03SSascha Wildnermultiple time intervals to have occurred.
6492750d28SVenkatesh Srinivas.Pp
6592750d28SVenkatesh SrinivasThe
6692750d28SVenkatesh Srinivas.Fn systimer_adjust_periodic
67ee147bcbSThomas Nikolajsenfunction changes the frequency at which a systimer's callback is invoked.
68ee147bcbSThomas NikolajsenThe
69ee147bcbSThomas Nikolajsencurrent time interval is not affected.
70ee147bcbSThomas NikolajsenThe
71*fab3eb7dSSascha Wildner.Fa freq
7292750d28SVenkatesh Srinivasargument specifies the new frequency.
7392750d28SVenkatesh Srinivas.Pp
7492750d28SVenkatesh SrinivasThe
7592750d28SVenkatesh Srinivas.Fn systimer_init_oneshot
7692750d28SVenkatesh Srinivasfunction arranges for a systimer callback function
7792750d28SVenkatesh Srinivas.Fa func
7892750d28SVenkatesh Srinivasto be invoked with argument
7992750d28SVenkatesh Srinivas.Fa data
8092750d28SVenkatesh Srinivasonce, after at least
8192750d28SVenkatesh Srinivas.Fa us
8292750d28SVenkatesh Srinivasmicroseconds.
834a5f69f6SSascha Wildner.Sh FILES
844a5f69f6SSascha WildnerThe systimer implementation is in
854a5f69f6SSascha Wildner.Pa /sys/kern/kern_systimer.c .
864a5f69f6SSascha Wildner.Sh EXAMPLES
8792750d28SVenkatesh SrinivasA simple example of using a one-short systimer to call a function after a short
8892750d28SVenkatesh Srinivastime:
89ee147bcbSThomas Nikolajsen.Bd -literal -offset indent
90ee147bcbSThomas Nikolajsen\&...
9192750d28SVenkatesh Srinivasstatic struct systimer short_st;
9292750d28SVenkatesh Srinivaschar *str = "goodbye!";
93ee147bcbSThomas Nikolajsen\&...
9492750d28SVenkatesh Srinivassystimer_init_oneshot(&short_st, panic, str, 1000);
95ee147bcbSThomas Nikolajsen\&...
9692750d28SVenkatesh Srinivas.Ed
9792750d28SVenkatesh Srinivas.Sh SEE ALSO
9892750d28SVenkatesh Srinivas.Xr callout 9
9992750d28SVenkatesh Srinivas.Sh HISTORY
10092750d28SVenkatesh SrinivasSystimers first appeared in
10192750d28SVenkatesh Srinivas.Dx 1.0 .
102