Commit | Line | Data |
---|---|---|
199800b2 JR |
1 | /* |
2 | * lttng-clock-override-test.c | |
3 | * | |
9d16b343 MJ |
4 | * Copyright (C) 2014 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> |
5 | * Copyright (C) 2015 Jonthan Rajotte <jonathan.rajotte-julien@efficios.com> | |
199800b2 | 6 | * |
9d16b343 | 7 | * SPDX-License-Identifier: MIT |
199800b2 | 8 | * |
9d16b343 | 9 | * Based on lttng-clock-override-example.c from LTTng-ust example |
199800b2 | 10 | * |
199800b2 JR |
11 | */ |
12 | ||
13 | #include <stdlib.h> | |
389fbf04 | 14 | #include <common/compat/time.h> |
199800b2 JR |
15 | #include <string.h> |
16 | #include <stdio.h> | |
4bd69c5f | 17 | #include <lttng/lttng-export.h> |
199800b2 JR |
18 | #include <lttng/ust-clock.h> |
19 | ||
20 | static | |
21 | uint64_t plugin_read64(void) | |
22 | { | |
23 | /* Freeze time */ | |
24 | return 0; | |
25 | } | |
26 | ||
27 | static | |
28 | uint64_t plugin_freq(void) | |
29 | { | |
30 | return 1000; /* 1KHz clock (very coarse!) */ | |
31 | } | |
32 | ||
33 | static | |
34 | int plugin_uuid(char *uuid) | |
35 | { | |
36 | const char myuuid[] = "83c63deb-7aa4-48fb-abda-946f400d76e6"; | |
37 | memcpy(uuid, myuuid, LTTNG_UST_UUID_STR_LEN); | |
38 | return 0; | |
39 | } | |
40 | ||
41 | static | |
42 | const char *plugin_name(void) | |
43 | { | |
44 | return "lttng_test_clock_override"; | |
45 | } | |
46 | ||
47 | static | |
48 | const char *plugin_description(void) | |
49 | { | |
50 | return "Freeze time with 1KHz for regression test"; | |
51 | } | |
52 | ||
4bd69c5f | 53 | LTTNG_EXPORT void lttng_ust_clock_plugin_init(void); |
199800b2 JR |
54 | void lttng_ust_clock_plugin_init(void) |
55 | { | |
56 | int ret; | |
57 | ||
58 | ret = lttng_ust_trace_clock_set_read64_cb(plugin_read64); | |
59 | if (ret) { | |
60 | fprintf(stderr, "Error setting clock override read64 callback: %s\n", | |
61 | strerror(-ret)); | |
62 | goto error; | |
63 | } | |
64 | ret = lttng_ust_trace_clock_set_freq_cb(plugin_freq); | |
65 | if (ret) { | |
66 | fprintf(stderr, "Error setting clock override freq callback: %s\n", | |
67 | strerror(-ret)); | |
68 | goto error; | |
69 | } | |
70 | ret = lttng_ust_trace_clock_set_uuid_cb(plugin_uuid); | |
71 | if (ret) { | |
72 | fprintf(stderr, "Error setting clock override uuid callback: %s\n", | |
73 | strerror(-ret)); | |
74 | goto error; | |
75 | } | |
76 | ||
77 | ret = lttng_ust_trace_clock_set_name_cb(plugin_name); | |
78 | if (ret) { | |
79 | fprintf(stderr, "Error setting clock override name callback: %s\n", | |
80 | strerror(-ret)); | |
81 | goto error; | |
82 | } | |
83 | ||
84 | ret = lttng_ust_trace_clock_set_description_cb(plugin_description); | |
85 | if (ret) { | |
86 | fprintf(stderr, "Error setting clock override description callback: %s\n", | |
87 | strerror(-ret)); | |
88 | goto error; | |
89 | } | |
90 | ||
91 | ret = lttng_ust_enable_trace_clock_override(); | |
92 | if (ret) { | |
93 | fprintf(stderr, "Error enabling clock override: %s\n", | |
94 | strerror(-ret)); | |
95 | goto error; | |
96 | } | |
97 | ||
98 | return; | |
99 | ||
100 | error: | |
101 | exit(EXIT_FAILURE); | |
102 | } |