xref: /haiku/src/system/libroot/posix/unistd/ualarm.c (revision 2f470aec1c92ce6917b8a903e343795dc77af41f)
1 /*
2  * Copyright 2004-2005, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  */
5 
6 
7 #include <errno.h>
8 #include <unistd.h>
9 #include <sys/time.h>
10 
11 #include <syscalls.h>
12 
13 
14 useconds_t
15 ualarm(useconds_t usec, useconds_t interval)
16 {
17 	struct itimerval value, oldValue;
18 
19 	value.it_value.tv_sec = usec / 1000000;
20 	value.it_value.tv_usec = usec % 1000000;
21 	value.it_interval.tv_sec = interval / 1000000;
22 	value.it_interval.tv_usec = interval % 1000000;
23 
24 	if (setitimer(ITIMER_REAL, &value, &oldValue) < 0)
25 		return -1;
26 
27 	return (oldValue.it_value.tv_sec * 1000000) + oldValue.it_value.tv_usec;
28 }
29