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 | ||
c9e313bc | 13 | #include <common/compat/time.hpp> |
28f23191 | 14 | |
4bd69c5f | 15 | #include <lttng/lttng-export.h> |
199800b2 JR |
16 | #include <lttng/ust-clock.h> |
17 | ||
28f23191 JG |
18 | #include <stdio.h> |
19 | #include <stdlib.h> | |
20 | #include <string.h> | |
21 | ||
22 | static uint64_t plugin_read64(void) | |
199800b2 JR |
23 | { |
24 | /* Freeze time */ | |
25 | return 0; | |
26 | } | |
27 | ||
28f23191 | 28 | static uint64_t plugin_freq(void) |
199800b2 | 29 | { |
28f23191 | 30 | return 1000; /* 1KHz clock (very coarse!) */ |
199800b2 JR |
31 | } |
32 | ||
28f23191 | 33 | static int plugin_uuid(char *uuid) |
199800b2 JR |
34 | { |
35 | const char myuuid[] = "83c63deb-7aa4-48fb-abda-946f400d76e6"; | |
36 | memcpy(uuid, myuuid, LTTNG_UST_UUID_STR_LEN); | |
37 | return 0; | |
38 | } | |
39 | ||
28f23191 | 40 | static const char *plugin_name(void) |
199800b2 JR |
41 | { |
42 | return "lttng_test_clock_override"; | |
43 | } | |
44 | ||
28f23191 | 45 | static const char *plugin_description(void) |
199800b2 JR |
46 | { |
47 | return "Freeze time with 1KHz for regression test"; | |
48 | } | |
49 | ||
4bd69c5f | 50 | LTTNG_EXPORT void lttng_ust_clock_plugin_init(void); |
199800b2 JR |
51 | void lttng_ust_clock_plugin_init(void) |
52 | { | |
53 | int ret; | |
54 | ||
55 | ret = lttng_ust_trace_clock_set_read64_cb(plugin_read64); | |
56 | if (ret) { | |
28f23191 JG |
57 | fprintf(stderr, |
58 | "Error setting clock override read64 callback: %s\n", | |
199800b2 JR |
59 | strerror(-ret)); |
60 | goto error; | |
61 | } | |
62 | ret = lttng_ust_trace_clock_set_freq_cb(plugin_freq); | |
63 | if (ret) { | |
28f23191 | 64 | fprintf(stderr, "Error setting clock override freq callback: %s\n", strerror(-ret)); |
199800b2 JR |
65 | goto error; |
66 | } | |
67 | ret = lttng_ust_trace_clock_set_uuid_cb(plugin_uuid); | |
68 | if (ret) { | |
28f23191 | 69 | fprintf(stderr, "Error setting clock override uuid callback: %s\n", strerror(-ret)); |
199800b2 JR |
70 | goto error; |
71 | } | |
72 | ||
73 | ret = lttng_ust_trace_clock_set_name_cb(plugin_name); | |
74 | if (ret) { | |
28f23191 | 75 | fprintf(stderr, "Error setting clock override name callback: %s\n", strerror(-ret)); |
199800b2 JR |
76 | goto error; |
77 | } | |
78 | ||
79 | ret = lttng_ust_trace_clock_set_description_cb(plugin_description); | |
80 | if (ret) { | |
28f23191 JG |
81 | fprintf(stderr, |
82 | "Error setting clock override description callback: %s\n", | |
199800b2 JR |
83 | strerror(-ret)); |
84 | goto error; | |
85 | } | |
86 | ||
87 | ret = lttng_ust_enable_trace_clock_override(); | |
88 | if (ret) { | |
28f23191 | 89 | fprintf(stderr, "Error enabling clock override: %s\n", strerror(-ret)); |
199800b2 JR |
90 | goto error; |
91 | } | |
92 | ||
93 | return; | |
94 | ||
95 | error: | |
96 | exit(EXIT_FAILURE); | |
97 | } |