summaryrefslogtreecommitdiff
path: root/usr/src/test/util-tests/tests/sleep/sleep.d
blob: 23bfcea65c9f8b1ba14157c12e6ee0f1636f832a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*
 * This file and its contents are supplied under the terms of the
 * Common Development and Distribution License ("CDDL"), version 1.0.
 * You may only use this file in accordance with the terms of version
 * 1.0 of the CDDL.
 *
 * A full copy of the text of the CDDL should have accompanied this
 * source.  A copy of the CDDL is also available via the Internet at
 * http://www.illumos.org/license/CDDL.
 */

/*
 * Copyright 2019 Robert Mustacchi
 */

/*
 * This is a companion DTrace script that is used by the sleep test. It
 * checks if the executed program asks to sleep for the right amount of
 * time and then exits in a way to indicate this. At the same time, it
 * always uses the SIGALRM feature of sleep(1) to make sure that sleep
 * doesn't continue executing (and also to make sure that the feature
 * works).
 *
 * We expect the number of seconds in $1 and the number of nanoseconds
 * in $2. This script should be invoked as dtrace -s sleep.d -c
 * '/usr/bin/sleep <waittime>' <seconds> <nanoseconds>.
 */
pid$target::nanosleep:entry
/args[0]->tv_sec == $1 && args[0]->tv_nsec == $2/
{
	raise(SIGALRM);
	exit(0);
}

pid$target::nanosleep:entry
{
	print(*args[0]);
	raise(SIGALRM);
	exit(1);
}