1*c373aa8bSJohn Wren Kennedy /*
2*c373aa8bSJohn Wren Kennedy  * This file and its contents are supplied under the terms of the
3*c373aa8bSJohn Wren Kennedy  * Common Development and Distribution License ("CDDL"), version 1.0.
4*c373aa8bSJohn Wren Kennedy  * You may only use this file in accordance with the terms of version
5*c373aa8bSJohn Wren Kennedy  * 1.0 of the CDDL.
6*c373aa8bSJohn Wren Kennedy  *
7*c373aa8bSJohn Wren Kennedy  * A full copy of the text of the CDDL should have accompanied this
8*c373aa8bSJohn Wren Kennedy  * source.  A copy of the CDDL is also available via the Internet at
9*c373aa8bSJohn Wren Kennedy  * http://www.illumos.org/license/CDDL.
10*c373aa8bSJohn Wren Kennedy  */
11*c373aa8bSJohn Wren Kennedy 
12*c373aa8bSJohn Wren Kennedy /*
13*c373aa8bSJohn Wren Kennedy  * Copyright (c) 2016 by Delphix. All rights reserved.
14*c373aa8bSJohn Wren Kennedy  */
15*c373aa8bSJohn Wren Kennedy 
16*c373aa8bSJohn Wren Kennedy #pragma D option stackframes=100
17*c373aa8bSJohn Wren Kennedy 
18*c373aa8bSJohn Wren Kennedy /*
19*c373aa8bSJohn Wren Kennedy  * @stacks: The number of times a stack has been recorded
20*c373aa8bSJohn Wren Kennedy  */
21*c373aa8bSJohn Wren Kennedy 
22*c373aa8bSJohn Wren Kennedy sched:::off-cpu
23*c373aa8bSJohn Wren Kennedy {
24*c373aa8bSJohn Wren Kennedy 	self->ts = timestamp;
25*c373aa8bSJohn Wren Kennedy }
26*c373aa8bSJohn Wren Kennedy 
27*c373aa8bSJohn Wren Kennedy sched:::on-cpu
28*c373aa8bSJohn Wren Kennedy / self->ts != 0 /
29*c373aa8bSJohn Wren Kennedy {
30*c373aa8bSJohn Wren Kennedy 	@stacks[stack()] = sum(timestamp - self->ts);
31*c373aa8bSJohn Wren Kennedy 	self->ts = 0;
32*c373aa8bSJohn Wren Kennedy }
33*c373aa8bSJohn Wren Kennedy 
34*c373aa8bSJohn Wren Kennedy ERROR
35*c373aa8bSJohn Wren Kennedy {
36*c373aa8bSJohn Wren Kennedy 	trace(arg1);
37*c373aa8bSJohn Wren Kennedy 	trace(arg2);
38*c373aa8bSJohn Wren Kennedy 	trace(arg3);
39*c373aa8bSJohn Wren Kennedy 	trace(arg4);
40*c373aa8bSJohn Wren Kennedy 	trace(arg5);
41*c373aa8bSJohn Wren Kennedy }
42