1.\" $OpenBSD: ualarm.3,v 1.18 2023/08/01 01:17:25 cheloha Exp $ 2.\" 3.\" Copyright (c) 1986, 1991, 1993 4.\" The Regents of the University of California. All rights reserved. 5.\" 6.\" Redistribution and use in source and binary forms, with or without 7.\" modification, are permitted provided that the following conditions 8.\" are met: 9.\" 1. Redistributions of source code must retain the above copyright 10.\" notice, this list of conditions and the following disclaimer. 11.\" 2. Redistributions in binary form must reproduce the above copyright 12.\" notice, this list of conditions and the following disclaimer in the 13.\" documentation and/or other materials provided with the distribution. 14.\" 3. Neither the name of the University nor the names of its contributors 15.\" may be used to endorse or promote products derived from this software 16.\" without specific prior written permission. 17.\" 18.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 19.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 22.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28.\" SUCH DAMAGE. 29.\" 30.Dd $Mdocdate: August 1 2023 $ 31.Dt UALARM 3 32.Os 33.Sh NAME 34.Nm ualarm 35.Nd schedule high resolution SIGALRM delivery 36.Sh SYNOPSIS 37.In unistd.h 38.Ft useconds_t 39.Fn ualarm "useconds_t microseconds" "useconds_t interval" 40.Sh DESCRIPTION 41.Bf -symbolic 42This is a simplified interface to 43.Xr setitimer 2 . 44.Ef 45.Pp 46The 47.Fn ualarm 48function schedules the 49.Dv SIGALRM 50signal for delivery to the calling process after at least the given number of 51.Fa microseconds 52have elapsed. 53If 54.Fa interval 55is non-zero, 56the 57.Dv SIGALRM 58signal is scheduled for redelivery to the calling process every 59.Fa interval 60microseconds thereafter. 61.Pp 62If an alarm is already pending, 63an additional call to 64.Fn ualarm 65supersedes the prior call. 66.Pp 67If 68.Fa microseconds 69is zero, 70any pending alarm is cancelled and the value of 71.Fa interval 72is ignored. 73.Sh RETURN VALUES 74The 75.Fn ualarm 76function returns the number of microseconds remaining until the next 77alarm is scheduled for delivery, 78or zero if no alarm is pending. 79.Sh SEE ALSO 80.Xr setitimer 2 , 81.Xr sigaction 2 , 82.Xr sigsuspend 2 , 83.Xr alarm 3 , 84.Xr signal 3 , 85.Xr sleep 3 , 86.Xr usleep 3 87.Sh STANDARDS 88The 89.Fn ualarm 90function conforms to 91.St -xpg4.2 . 92.Sh HISTORY 93The 94.Fn ualarm 95function first appeared in 96.Bx 4.3 . 97.Sh CAVEATS 98The 99.Fn ualarm 100function is implemented with the per-process 101.Dv ITIMER_REAL 102timer described in 103.Xr setitimer 2 . 104Use of both 105.Fn ualarm 106and 107.Xr setitimer 2 108in the same program may yield confusing behavior. 109