aboutsummaryrefslogtreecommitdiff
path: root/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/tst.usdt.c
blob: 2a54d4974be004d6d1f387b8e7b2a302d7d256a2 (plain) (blame)
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*
 * 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 2012 (c), Joyent, Inc.  All rights reserved.
 */

#include <sys/sdt.h>
#include <stdio.h>
#include <stdlib.h>
#include "usdt.h"

#define	FMT	"{" \
		"  \"sizes\": [ \"first\", 2, %f ]," \
		"  \"index\": %d," \
		"  \"facts\": {" \
		"    \"odd\": \"%s\"," \
		"    \"even\": \"%s\"" \
		"  }," \
		"  \"action\": \"%s\"" \
		"}\n"

int
waiting(volatile int *a)
{
	return (*a);
}

int
main(int argc, char **argv)
{
	volatile int a = 0;
	int idx;
	double size = 250.5;

	while (waiting(&a) == 0)
		continue;

	for (idx = 0; idx < 10; idx++) {
		char *odd, *even, *json, *action;

		size *= 1.78;
		odd = idx % 2 == 1 ? "true" : "false";
		even = idx % 2 == 0 ? "true" : "false";
		action = idx == 7 ? "ignore" : "print";

		asprintf(&json, FMT, size, idx, odd, even, action);
		BUNYAN_FAKE_LOG_DEBUG(json);
		free(json);
	}

	BUNYAN_FAKE_LOG_DEBUG("{\"finished\": true}");

	return (0);
}