xref: /illumos-gate/usr/src/cmd/dtrace/test/tst/common/json/tst.usdt.c (revision 45ede40b2394db7967e59f19288fae9b62efd4aa)
1 /*
2  * This file and its contents are supplied under the terms of the
3  * Common Development and Distribution License ("CDDL"), version 1.0.
4  * You may only use this file in accordance with the terms of version
5  * 1.0 of the CDDL.
6  *
7  * A full copy of the text of the CDDL should have accompanied this
8  * source.  A copy of the CDDL is also available via the Internet at
9  * http://www.illumos.org/license/CDDL.
10  */
11 
12 /*
13  * Copyright 2012 (c), Joyent, Inc.  All rights reserved.
14  */
15 
16 #include <sys/sdt.h>
17 #include "usdt.h"
18 
19 #define	FMT	"{" \
20 		"  \"sizes\": [ \"first\", 2, %f ]," \
21 		"  \"index\": %d," \
22 		"  \"facts\": {" \
23 		"    \"odd\": \"%s\"," \
24 		"    \"even\": \"%s\"" \
25 		"  }," \
26 		"  \"action\": \"%s\"" \
27 		"}\n"
28 
29 int
30 waiting(volatile int *a)
31 {
32 	return (*a);
33 }
34 
35 int
36 main(int argc, char **argv)
37 {
38 	volatile int a = 0;
39 	int idx;
40 	double size = 250.5;
41 
42 	while (waiting(&a) == 0)
43 		continue;
44 
45 	for (idx = 0; idx < 10; idx++) {
46 		char *odd, *even, *json, *action;
47 
48 		size *= 1.78;
49 		odd = idx % 2 == 1 ? "true" : "false";
50 		even = idx % 2 == 0 ? "true" : "false";
51 		action = idx == 7 ? "ignore" : "print";
52 
53 		asprintf(&json, FMT, size, idx, odd, even, action);
54 		BUNYAN_FAKE_LOG_DEBUG(json);
55 		free(json);
56 	}
57 
58 	BUNYAN_FAKE_LOG_DEBUG("{\"finished\": true}");
59 
60 	return (0);
61 }
62