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